X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=stat.c;h=ca733108a879b772d45186a0600e8439f9f50433;hb=8d7b618a261e7642769b8f0bf2cf6649bb383330;hp=e43db8f9d075431a0d90c04b8d4fd941c05ffaf5;hpb=6bb58215842760895071d9f331da4dc2dfc16f30;p=fio.git diff --git a/stat.c b/stat.c index e43db8f9..ca733108 100644 --- 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; }