X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=client.c;h=47a2380c129c64b529c8bb3a887bcb4e8462f1be;hb=5442cfb01f805ba26d3b8917b85c8e5f7bc50456;hp=5dcc5f5410bf712e1947b1e66391eaab7335a545;hpb=b852e7cf097cec1c7fb92305f9c3c6b394bb39ad;p=fio.git diff --git a/client.c b/client.c index 5dcc5f54..47a2380c 100644 --- a/client.c +++ b/client.c @@ -111,6 +111,10 @@ void fio_put_client(struct fio_client *client) free(client->argv); if (client->name) free(client->name); + while (client->nr_ini_file) + free(client->ini_file[--client->nr_ini_file]); + if (client->ini_file) + free(client->ini_file); free(client); } @@ -227,6 +231,19 @@ err: return NULL; } +void fio_client_add_ini_file(void *cookie, const char *ini_file) +{ + struct fio_client *client = cookie; + size_t new_size; + + dprint(FD_NET, "client <%s>: add ini %s\n", client->hostname, ini_file); + + new_size = (client->nr_ini_file + 1) * sizeof(char *); + client->ini_file = realloc(client->ini_file, new_size); + client->ini_file[client->nr_ini_file] = strdup(ini_file); + client->nr_ini_file++; +} + int fio_client_add(struct client_ops *ops, const char *hostname, void **cookie) { struct fio_client *existing = *cookie; @@ -620,7 +637,18 @@ int fio_clients_send_ini(const char *filename) flist_for_each_safe(entry, tmp, &client_list) { client = flist_entry(entry, struct fio_client, list); - if (fio_client_send_ini(client, filename)) + if (client->nr_ini_file) { + int i; + + for (i = 0; i < client->nr_ini_file; i++) { + const char *ini = client->ini_file[i]; + + if (fio_client_send_ini(client, ini)) { + remove_client(client); + break; + } + } + } else if (!filename || fio_client_send_ini(client, filename)) remove_client(client); } @@ -662,7 +690,7 @@ static void convert_ts(struct thread_stat *dst, struct thread_stat *src) dst->pid = le32_to_cpu(src->pid); dst->members = le32_to_cpu(src->members); - for (i = 0; i < 2; i++) { + for (i = 0; i < DDIR_RWDIR_CNT; i++) { convert_io_stat(&dst->clat_stat[i], &src->clat_stat[i]); convert_io_stat(&dst->slat_stat[i], &src->slat_stat[i]); convert_io_stat(&dst->lat_stat[i], &src->lat_stat[i]); @@ -694,7 +722,7 @@ static void convert_ts(struct thread_stat *dst, struct thread_stat *src) dst->io_u_lat_m[i] = le32_to_cpu(src->io_u_lat_m[i]); } - for (i = 0; i < 2; i++) + for (i = 0; i < DDIR_RWDIR_CNT; i++) for (j = 0; j < FIO_IO_U_PLAT_NR; j++) dst->io_u_plat[i][j] = le32_to_cpu(src->io_u_plat[i][j]); @@ -706,7 +734,7 @@ static void convert_ts(struct thread_stat *dst, struct thread_stat *src) dst->total_submit = le64_to_cpu(src->total_submit); dst->total_complete = le64_to_cpu(src->total_complete); - for (i = 0; i < 2; i++) { + for (i = 0; i < DDIR_RWDIR_CNT; i++) { dst->io_bytes[i] = le64_to_cpu(src->io_bytes[i]); dst->runtime[i] = le64_to_cpu(src->runtime[i]); } @@ -722,7 +750,7 @@ static void convert_gs(struct group_run_stats *dst, struct group_run_stats *src) { int i; - for (i = 0; i < 2; i++) { + for (i = 0; i < DDIR_RWDIR_CNT; i++) { dst->max_run[i] = le64_to_cpu(src->max_run[i]); dst->min_run[i] = le64_to_cpu(src->min_run[i]); dst->max_bw[i] = le64_to_cpu(src->max_bw[i]); @@ -822,7 +850,7 @@ static void handle_du(struct fio_client *client, struct fio_net_cmd *cmd) log_info("\nDisk stats (read/write):\n"); } - print_disk_util(&du->dus, &du->agg, terse_output); + print_disk_util(&du->dus, &du->agg, output_format == FIO_OUTPUT_TERSE); } static void convert_jobs_eta(struct jobs_eta *je) @@ -834,11 +862,11 @@ static void convert_jobs_eta(struct jobs_eta *je) je->nr_pending = le32_to_cpu(je->nr_pending); je->files_open = le32_to_cpu(je->files_open); - for (i = 0; i < 2; i++) { - je->m_rate[i] = le32_to_cpu(je->m_rate[i]); - je->t_rate[i] = le32_to_cpu(je->t_rate[i]); - je->m_iops[i] = le32_to_cpu(je->m_iops[i]); - je->t_iops[i] = le32_to_cpu(je->t_iops[i]); + for (i = 0; i < DDIR_RWDIR_CNT; i++) { + je->m_rate[i] = le32_to_cpu(je->m_rate[i]); + je->t_rate[i] = le32_to_cpu(je->t_rate[i]); + je->m_iops[i] = le32_to_cpu(je->m_iops[i]); + je->t_iops[i] = le32_to_cpu(je->t_iops[i]); je->rate[i] = le32_to_cpu(je->rate[i]); je->iops[i] = le32_to_cpu(je->iops[i]); } @@ -846,6 +874,7 @@ static void convert_jobs_eta(struct jobs_eta *je) je->elapsed_sec = le64_to_cpu(je->elapsed_sec); je->eta_sec = le64_to_cpu(je->eta_sec); je->nr_threads = le32_to_cpu(je->nr_threads); + je->is_pow2 = le32_to_cpu(je->is_pow2); } void fio_client_sum_jobs_eta(struct jobs_eta *dst, struct jobs_eta *je) @@ -857,7 +886,7 @@ void fio_client_sum_jobs_eta(struct jobs_eta *dst, struct jobs_eta *je) dst->nr_pending += je->nr_pending; dst->files_open += je->files_open; - for (i = 0; i < 2; i++) { + for (i = 0; i < DDIR_RWDIR_CNT; i++) { dst->m_rate[i] += je->m_rate[i]; dst->t_rate[i] += je->t_rate[i]; dst->m_iops[i] += je->m_iops[i]; @@ -966,9 +995,9 @@ static void handle_probe(struct fio_client *client, struct fio_net_cmd *cmd) sprintf(bit, "%d-bit", probe->bpp * 8); - log_info("hostname=%s, be=%u, %s, os=%s, arch=%s, fio=%u.%u.%u\n", + log_info("hostname=%s, be=%u, %s, os=%s, arch=%s, fio=%s\n", probe->hostname, probe->bigendian, bit, os, arch, - probe->fio_major, probe->fio_minor, probe->fio_patch); + probe->fio_version); if (!client->name) client->name = strdup((char *) probe->hostname);