X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=stat.c;h=3adb46eab8087cc53ae0fd2b7c15ad048596c040;hp=f84ce5300f605736b5ef8b9556286792b2b53cd8;hb=05bff935cf3b8d5b3cba3958ec8ea9205bdc9f86;hpb=4e59d0f3a3ff569bddb31fe6927a9faf204ae9bf diff --git a/stat.c b/stat.c index f84ce530..3adb46ea 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; @@ -1271,10 +1272,12 @@ static void __show_run_stats(void) if (!td->error && td->o.continue_on_error && td->first_error) { ts->error = td->first_error; - strcpy(ts->verror, td->verror); + ts->verror[sizeof(ts->verror) - 1] = '\0'; + strncpy(ts->verror, td->verror, sizeof(ts->verror) - 1); } else if (td->error) { ts->error = td->error; - strcpy(ts->verror, td->verror); + ts->verror[sizeof(ts->verror) - 1] = '\0'; + strncpy(ts->verror, td->verror, sizeof(ts->verror) - 1); } } @@ -1470,7 +1473,12 @@ void show_running_run_stats(void) fio_mutex_down(stat_mutex); if (!pthread_create(&thread, NULL, __show_running_run_stats, NULL)) { - pthread_detach(thread); + int err; + + err = pthread_detach(thread); + if (err) + log_err("fio: DU thread detach failed: %s\n", strerror(err)); + return; } @@ -1493,8 +1501,11 @@ static int check_status_file(void) 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"; @@ -1799,7 +1810,11 @@ void add_bw_sample(struct thread_data *td, enum fio_ddir ddir, unsigned int bs, if (!delta) continue; /* No entries for interval */ - rate = delta * 1000 / spent / 1024; + if (spent) + rate = delta * 1000 / spent / 1024; + else + rate = 0; + add_stat_sample(&ts->bw_stat[ddir], rate); if (td->bw_log) @@ -1834,7 +1849,11 @@ void add_iops_sample(struct thread_data *td, enum fio_ddir ddir, unsigned int bs if (!delta) continue; /* No entries for interval */ - iops = (delta * 1000) / spent; + if (spent) + iops = (delta * 1000) / spent; + else + iops = 0; + add_stat_sample(&ts->iops_stat[ddir], iops); if (td->iops_log)