The following changes since commit 111558579a2f1965ff3f6a67ecb8ee4b596a4f88:

  Ensure we have enough room for the ETA runstr (2014-06-23 19:07:12 -0600)

are available in the git repository at:

  git://git.kernel.dk/fio.git master

for you to fetch changes up to a606a802173272002e37be6475802be8c37481d6:

  Cast input argument for json_object_add_value_int to long long (2014-06-24 
19:31:22 -0600)

----------------------------------------------------------------
Jens Axboe (3):
      Add a get_jobs_eta() to return jobs eta information
      Ensure that job name is set before being used
      Get the crctest results properly aligned

Puthikorn Voravootivat (1):
      Cast input argument for json_object_add_value_int to long long

 crc/test.c |    2 +-
 eta.c      |   31 ++++++++++++++++++++-----------
 init.c     |   18 ++++++++++++------
 json.h     |    2 +-
 server.c   |   14 +++-----------
 stat.h     |    8 ++++++--
 6 files changed, 43 insertions(+), 32 deletions(-)

---

Diff of recent changes:

diff --git a/crc/test.c b/crc/test.c
index 3773b71..3ce717a 100644
--- a/crc/test.c
+++ b/crc/test.c
@@ -373,7 +373,7 @@ int fio_crctest(const char *type)
                usec = t[i].fn();
                mb_sec = (double) mb / (double) usec;
                mb_sec /= (1.024 * 1.024);
-               printf("%s:\t%.2f MB/sec\n", t[i].name, mb_sec);
+               printf("%s:\t%8.2f MB/sec\n", t[i].name, mb_sec);
        }
 
        return 0;
diff --git a/eta.c b/eta.c
index dfe66f9..bdd5376 100644
--- a/eta.c
+++ b/eta.c
@@ -8,10 +8,6 @@
 #include "fio.h"
 
 static char __run_str[REAL_MAX_JOBS + 1];
-
-/*
- * Worst level condensing would be 1:5, so allow enough room for that
- */
 static char run_str[__THREAD_RUNSTR_SZ(REAL_MAX_JOBS)];
 
 static void update_condensed_str(char *run_str, char *run_str_condensed)
@@ -584,19 +580,32 @@ void display_thread_status(struct jobs_eta *je)
        fflush(stdout);
 }
 
-void print_thread_status(void)
+struct jobs_eta *get_jobs_eta(int force, size_t *size)
 {
        struct jobs_eta *je;
-       size_t size;
 
        if (!thread_number)
-               return;
+               return NULL;
 
-       size = sizeof(*je) + THREAD_RUNSTR_SZ;
-       je = malloc(size);
-       memset(je, 0, size);
+       *size = sizeof(*je) + THREAD_RUNSTR_SZ;
+       je = malloc(*size);
+       memset(je, 0, *size);
+
+       if (!calc_thread_status(je, 0)) {
+               free(je);
+               return NULL;
+       }
+
+       return je;
+}
+
+void print_thread_status(void)
+{
+       struct jobs_eta *je;
+       size_t size;
 
-       if (calc_thread_status(je, 0))
+       je = get_jobs_eta(0, &size);
+       if (je)
                display_thread_status(je);
 
        free(je);
diff --git a/init.c b/init.c
index d44eb5b..6b29aa7 100644
--- a/init.c
+++ b/init.c
@@ -342,7 +342,7 @@ static void set_cmd_options(struct thread_data *td)
  * Return a free job structure.
  */
 static struct thread_data *get_new_job(int global, struct thread_data *parent,
-                                      int preserve_eo)
+                                      int preserve_eo, const char *jobname)
 {
        struct thread_data *td;
 
@@ -376,6 +376,9 @@ static struct thread_data *get_new_job(int global, struct 
thread_data *parent,
 
        td->thread_number = thread_number;
 
+       if (jobname)
+               td->o.name = strdup(jobname);
+
        if (!parent->o.group_reporting)
                stat_number++;
 
@@ -398,6 +401,9 @@ static void put_job(struct thread_data *td)
        if (td->io_ops)
                free_ioengine(td);
 
+       if (td->o.name)
+               free(td->o.name);
+
        memset(&threads[td->thread_number - 1], 0, sizeof(*td));
        thread_number--;
 }
@@ -1202,7 +1208,7 @@ static int add_job(struct thread_data *td, const char 
*jobname, int job_add_num,
         */
        numjobs = o->numjobs;
        while (--numjobs) {
-               struct thread_data *td_new = get_new_job(0, td, 1);
+               struct thread_data *td_new = get_new_job(0, td, 1, jobname);
 
                if (!td_new)
                        goto err;
@@ -1260,11 +1266,11 @@ void add_job_opts(const char **o, int client_type)
                        sprintf(jobname, "%s", o[i] + 5);
                }
                if (in_global && !td_parent)
-                       td_parent = get_new_job(1, &def_thread, 0);
+                       td_parent = get_new_job(1, &def_thread, 0, jobname);
                else if (!in_global && !td) {
                        if (!td_parent)
                                td_parent = &def_thread;
-                       td = get_new_job(0, td_parent, 0);
+                       td = get_new_job(0, td_parent, 0, jobname);
                }
                if (in_global)
                        fio_options_parse(td_parent, (char **) &o[i], 1, 0);
@@ -1399,7 +1405,7 @@ int parse_jobs_ini(char *file, int is_buf, int 
stonewall_flag, int type)
                        first_sect = 0;
                }
 
-               td = get_new_job(global, &def_thread, 0);
+               td = get_new_job(global, &def_thread, 0, name);
                if (!td) {
                        ret = 1;
                        break;
@@ -1895,7 +1901,7 @@ int parse_cmd_line(int argc, char *argv[], int 
client_type)
                                if (is_section && skip_this_section(val))
                                        continue;
 
-                               td = get_new_job(global, &def_thread, 1);
+                               td = get_new_job(global, &def_thread, 1, NULL);
                                if (!td || ioengine_load(td)) {
                                        if (td) {
                                                put_job(td);
diff --git a/json.h b/json.h
index 081afd6..962c11c 100644
--- a/json.h
+++ b/json.h
@@ -52,7 +52,7 @@ void json_free_object(struct json_object *obj);
 
 int json_object_add_value_type(struct json_object *obj, const char *name, int 
type, ...);
 #define json_object_add_value_int(obj, name, val) \
-       json_object_add_value_type((obj), name, JSON_TYPE_INTEGER, (val))
+       json_object_add_value_type((obj), name, JSON_TYPE_INTEGER, (long long) 
(val))
 #define json_object_add_value_float(obj, name, val) \
        json_object_add_value_type((obj), name, JSON_TYPE_FLOAT, (val))
 #define json_object_add_value_string(obj, name, val) \
diff --git a/server.c b/server.c
index e20f592..76b6b54 100644
--- a/server.c
+++ b/server.c
@@ -666,21 +666,13 @@ static int handle_probe_cmd(struct fio_net_cmd *cmd)
 static int handle_send_eta_cmd(struct fio_net_cmd *cmd)
 {
        struct jobs_eta *je;
-       size_t size;
        uint64_t tag = cmd->tag;
+       size_t size;
        int i;
 
-       if (!thread_number)
-               return 0;
-
-       size = sizeof(*je) + THREAD_RUNSTR_SZ;
-       je = malloc(size);
-       memset(je, 0, size);
-
-       if (!calc_thread_status(je, 1)) {
-               free(je);
+       je = get_jobs_eta(1, &size);
+       if (!je)
                return 0;
-       }
 
        dprint(FD_NET, "server sending status\n");
 
diff --git a/stat.h b/stat.h
index 2c2f1e1..6f9d82a 100644
--- a/stat.h
+++ b/stat.h
@@ -205,6 +205,8 @@ struct jobs_eta {
        uint8_t run_str[];
 };
 
+extern struct jobs_eta *get_jobs_eta(int force, size_t *size);
+
 extern void stat_init(void);
 extern void stat_exit(void);
 
@@ -240,8 +242,10 @@ static inline int usec_to_msec(unsigned long *min, 
unsigned long *max,
 
        return 1;
 }
-
-#define __THREAD_RUNSTR_SZ(nr) (((nr) * 5) + 1)
+/*
+ * Worst level condensing would be 1:5, so allow enough room for that
+ */
+#define __THREAD_RUNSTR_SZ(nr) ((nr) * 5)
 #define THREAD_RUNSTR_SZ       __THREAD_RUNSTR_SZ(thread_number)
 
 #endif
--
To unsubscribe from this list: send the line "unsubscribe fio" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to