static struct json_array *clients_array = NULL;
static struct json_array *du_array = NULL;
+static int error_clients;
+
#define FIO_CLIENT_HASH_BITS 7
#define FIO_CLIENT_HASH_SZ (1 << FIO_CLIENT_HASH_BITS)
#define FIO_CLIENT_HASH_MASK (FIO_CLIENT_HASH_SZ - 1)
if (!client->did_stat)
sum_stat_clients--;
+ if (client->error)
+ error_clients++;
+
free(client);
}
static void probe_client(struct fio_client *client)
{
struct cmd_client_probe_pdu pdu;
+ const char *sname;
uint64_t tag;
char buf[64];
pdu.flags = 0;
#endif
- strcpy((char *) pdu.server, server_name(client, buf, sizeof(buf)));
+ sname = server_name(client, buf, sizeof(buf));
+ memset(pdu.server, 0, sizeof(pdu.server));
+ strncpy((char *) pdu.server, sname, sizeof(pdu.server) - 1);
fio_net_send_cmd(client->fd, FIO_NET_CMD_PROBE, &pdu, sizeof(pdu), &tag, &client->cmd_list);
}
dst->latency_target = le64_to_cpu(src->latency_target);
dst->latency_window = le64_to_cpu(src->latency_window);
dst->latency_percentile.u.f = fio_uint64_to_double(le64_to_cpu(src->latency_percentile.u.i));
+
+ dst->nr_block_infos = le64_to_cpu(src->nr_block_infos);
+ for (i = 0; i < dst->nr_block_infos; i++)
+ dst->block_infos[i] = le32_to_cpu(src->block_infos[i]);
}
static void convert_gs(struct group_run_stats *dst, struct group_run_stats *src)
int i;
for (i = 0; i < 2; i++) {
- agg->ios[i] = le32_to_cpu(agg->ios[i]);
- agg->merges[i] = le32_to_cpu(agg->merges[i]);
+ agg->ios[i] = le64_to_cpu(agg->ios[i]);
+ agg->merges[i] = le64_to_cpu(agg->merges[i]);
agg->sectors[i] = le64_to_cpu(agg->sectors[i]);
- agg->ticks[i] = le32_to_cpu(agg->ticks[i]);
+ agg->ticks[i] = le64_to_cpu(agg->ticks[i]);
}
- agg->io_ticks = le32_to_cpu(agg->io_ticks);
- agg->time_in_queue = le32_to_cpu(agg->time_in_queue);
+ agg->io_ticks = le64_to_cpu(agg->io_ticks);
+ agg->time_in_queue = le64_to_cpu(agg->time_in_queue);
agg->slavecount = le32_to_cpu(agg->slavecount);
agg->max_util.u.f = fio_uint64_to_double(le64_to_cpu(agg->max_util.u.i));
}
int i;
for (i = 0; i < 2; i++) {
- dus->s.ios[i] = le32_to_cpu(dus->s.ios[i]);
- dus->s.merges[i] = le32_to_cpu(dus->s.merges[i]);
+ dus->s.ios[i] = le64_to_cpu(dus->s.ios[i]);
+ dus->s.merges[i] = le64_to_cpu(dus->s.merges[i]);
dus->s.sectors[i] = le64_to_cpu(dus->s.sectors[i]);
- dus->s.ticks[i] = le32_to_cpu(dus->s.ticks[i]);
+ dus->s.ticks[i] = le64_to_cpu(dus->s.ticks[i]);
}
- dus->s.io_ticks = le32_to_cpu(dus->s.io_ticks);
- dus->s.time_in_queue = le32_to_cpu(dus->s.time_in_queue);
+ dus->s.io_ticks = le64_to_cpu(dus->s.io_ticks);
+ dus->s.time_in_queue = le64_to_cpu(dus->s.time_in_queue);
dus->s.msec = le64_to_cpu(dus->s.msec);
}
char buf[64];
__verify_save_state(pdu, server_name(client, buf, sizeof(buf)));
+ exec_trigger(trigger_cmd);
break;
}
case FIO_NET_CMD_SENDFILE: {
else
log_err("fio: client %s timed out\n", client->hostname);
+ client->error = ETIMEDOUT;
remove_client(client);
ret = 1;
}
fio_client_json_fini();
free(pfds);
- return retval;
+ return retval || error_clients;
}