stat: fix wrong check for whether we have a description or not
[fio.git] / stat.c
diff --git a/stat.c b/stat.c
index e43db8f9d075431a0d90c04b8d4fd941c05ffaf5..ca733108a879b772d45186a0600e8439f9f50433 100644 (file)
--- a/stat.c
+++ b/stat.c
@@ -497,7 +497,8 @@ static void show_latencies(struct thread_stat *ts)
        show_lat_m(io_u_lat_m);
 }
 
-void show_thread_status_normal(struct thread_stat *ts, struct group_run_stats *rs)
+static void show_thread_status_normal(struct thread_stat *ts,
+                                     struct group_run_stats *rs)
 {
        double usr_cpu, sys_cpu;
        unsigned long runtime;
@@ -769,7 +770,7 @@ static void add_ddir_status_json(struct thread_stat *ts,
        }
        json_object_add_value_int(dir_object, "bw_min", min);
        json_object_add_value_int(dir_object, "bw_max", max);
-       json_object_add_value_float(dir_object, "bw_agg", mean);
+       json_object_add_value_float(dir_object, "bw_agg", p_of_agg);
        json_object_add_value_float(dir_object, "bw_mean", mean);
        json_object_add_value_float(dir_object, "bw_dev", dev);
 }
@@ -830,7 +831,7 @@ static void show_thread_status_terse_v2(struct thread_stat *ts,
        log_info("\n");
 
        /* Additional output if description is set */
-       if (ts->description)
+       if (strlen(ts->description))
                log_info(";%s", ts->description);
 
        log_info("\n");
@@ -1012,7 +1013,7 @@ struct json_object *show_thread_status(struct thread_stat *ts,
        if (output_format == FIO_OUTPUT_TERSE)
                show_thread_status_terse(ts, rs);
        else if (output_format == FIO_OUTPUT_JSON)
-               return(show_thread_status_json(ts, rs));
+               return show_thread_status_json(ts, rs);
        else
                show_thread_status_normal(ts, rs);
        return NULL;
@@ -1232,12 +1233,12 @@ static void __show_run_stats(void)
                        /*
                         * These are per-group shared already
                         */
-                       strncpy(ts->name, td->o.name, FIO_JOBNAME_SIZE);
+                       strncpy(ts->name, td->o.name, FIO_JOBNAME_SIZE - 1);
                        if (td->o.description)
                                strncpy(ts->description, td->o.description,
-                                               FIO_JOBNAME_SIZE);
+                                               FIO_JOBDESC_SIZE - 1);
                        else
-                               memset(ts->description, 0, FIO_JOBNAME_SIZE);
+                               memset(ts->description, 0, FIO_JOBDESC_SIZE);
 
                        /*
                         * If multiple entries in this group, this is
@@ -1479,8 +1480,9 @@ void show_running_run_stats(void)
 
 static int status_interval_init;
 static struct timeval status_time;
+static int status_file_disabled;
 
-#define FIO_STATUS_FILE                "/tmp/fio-dump-status"
+#define FIO_STATUS_FILE                "fio-dump-status"
 
 static int check_status_file(void)
 {
@@ -1488,9 +1490,15 @@ static int check_status_file(void)
        const char *temp_dir;
        char fio_status_file_path[PATH_MAX];
 
+       if (status_file_disabled)
+               return 0;
+
        temp_dir = getenv("TMPDIR");
-       if (temp_dir == NULL)
+       if (temp_dir == NULL) {
                temp_dir = getenv("TEMP");
+               if (temp_dir && strlen(temp_dir) >= PATH_MAX)
+                       temp_dir = NULL;
+       }
        if (temp_dir == NULL)
                temp_dir = "/tmp";
 
@@ -1499,7 +1507,13 @@ static int check_status_file(void)
        if (stat(fio_status_file_path, &sb))
                return 0;
 
-       unlink(fio_status_file_path);
+       if (unlink(fio_status_file_path) < 0) {
+               log_err("fio: failed to unlink %s: %s\n", fio_status_file_path,
+                                                       strerror(errno));
+               log_err("fio: disabling status file updates\n");
+               status_file_disabled = 1;
+       }
+
        return 1;
 }