static void handle_du(struct fio_client *client, struct fio_net_cmd *cmd);
static void handle_ts(struct fio_client *client, struct fio_net_cmd *cmd);
static void handle_gs(struct fio_client *client, struct fio_net_cmd *cmd);
static void handle_probe(struct fio_client *client, struct fio_net_cmd *cmd);
static void handle_text(struct fio_client *client, struct fio_net_cmd *cmd);
static void handle_du(struct fio_client *client, struct fio_net_cmd *cmd);
static void handle_ts(struct fio_client *client, struct fio_net_cmd *cmd);
static void handle_gs(struct fio_client *client, struct fio_net_cmd *cmd);
static void handle_probe(struct fio_client *client, struct fio_net_cmd *cmd);
static void handle_text(struct fio_client *client, struct fio_net_cmd *cmd);
static void handle_start(struct fio_client *client, struct fio_net_cmd *cmd);
static void convert_text(struct fio_net_cmd *cmd);
static void handle_start(struct fio_client *client, struct fio_net_cmd *cmd);
static void convert_text(struct fio_net_cmd *cmd);
convert_io_stat(&dst->slat_stat[i], &src->slat_stat[i]);
convert_io_stat(&dst->lat_stat[i], &src->lat_stat[i]);
convert_io_stat(&dst->bw_stat[i], &src->bw_stat[i]);
convert_io_stat(&dst->slat_stat[i], &src->slat_stat[i]);
convert_io_stat(&dst->lat_stat[i], &src->lat_stat[i]);
convert_io_stat(&dst->bw_stat[i], &src->bw_stat[i]);
dst->ctx = le64_to_cpu(src->ctx);
dst->minf = le64_to_cpu(src->minf);
dst->majf = le64_to_cpu(src->majf);
dst->ctx = le64_to_cpu(src->ctx);
dst->minf = le64_to_cpu(src->minf);
dst->majf = le64_to_cpu(src->majf);
dst->percentile_precision = le64_to_cpu(src->percentile_precision);
for (i = 0; i < FIO_IO_U_LIST_MAX_LEN; i++) {
dst->percentile_precision = le64_to_cpu(src->percentile_precision);
for (i = 0; i < FIO_IO_U_LIST_MAX_LEN; i++) {
- dst->io_u_map[i] = le32_to_cpu(src->io_u_map[i]);
- dst->io_u_submit[i] = le32_to_cpu(src->io_u_submit[i]);
- dst->io_u_complete[i] = le32_to_cpu(src->io_u_complete[i]);
+ dst->io_u_map[i] = le64_to_cpu(src->io_u_map[i]);
+ dst->io_u_submit[i] = le64_to_cpu(src->io_u_submit[i]);
+ dst->io_u_complete[i] = le64_to_cpu(src->io_u_complete[i]);
dst->latency_depth = le32_to_cpu(src->latency_depth);
dst->latency_target = le64_to_cpu(src->latency_target);
dst->latency_window = le64_to_cpu(src->latency_window);
dst->latency_depth = le32_to_cpu(src->latency_depth);
dst->latency_target = le64_to_cpu(src->latency_target);
dst->latency_window = le64_to_cpu(src->latency_window);
dst->ss_deviation.u.f = fio_uint64_to_double(le64_to_cpu(src->ss_deviation.u.i));
dst->ss_criterion.u.f = fio_uint64_to_double(le64_to_cpu(src->ss_criterion.u.i));
dst->ss_deviation.u.f = fio_uint64_to_double(le64_to_cpu(src->ss_deviation.u.i));
dst->ss_criterion.u.f = fio_uint64_to_double(le64_to_cpu(src->ss_criterion.u.i));
for (i = 0; i < dst->ss_dur; i++ ) {
dst->ss_iops_data[i] = le64_to_cpu(src->ss_iops_data[i]);
dst->ss_bw_data[i] = le64_to_cpu(src->ss_bw_data[i]);
for (i = 0; i < dst->ss_dur; i++ ) {
dst->ss_iops_data[i] = le64_to_cpu(src->ss_iops_data[i]);
dst->ss_bw_data[i] = le64_to_cpu(src->ss_bw_data[i]);
client_ts.thread_number = p->ts.thread_number;
client_ts.groupid = p->ts.groupid;
client_ts.unified_rw_rep = p->ts.unified_rw_rep;
client_ts.thread_number = p->ts.thread_number;
client_ts.groupid = p->ts.groupid;
client_ts.unified_rw_rep = p->ts.unified_rw_rep;
if (++sum_stat_nr == sum_stat_clients) {
strcpy(client_ts.name, "All clients");
if (++sum_stat_nr == sum_stat_clients) {
strcpy(client_ts.name, "All clients");
je->nr_threads = le32_to_cpu(je->nr_threads);
je->is_pow2 = le32_to_cpu(je->is_pow2);
je->unit_base = le32_to_cpu(je->unit_base);
je->nr_threads = le32_to_cpu(je->nr_threads);
je->is_pow2 = le32_to_cpu(je->is_pow2);
je->unit_base = le32_to_cpu(je->unit_base);
int log_offset;
uint64_t i, j, nr_samples;
struct io_u_plat_entry *entry;
int log_offset;
uint64_t i, j, nr_samples;
struct io_u_plat_entry *entry;
fprintf(f, "%lu, %u, %u, ", (unsigned long) s->time,
io_sample_ddir(s), s->bs);
for (j = 0; j < FIO_IO_U_PLAT_NR - stride; j += stride) {
fprintf(f, "%lu, %u, %u, ", (unsigned long) s->time,
io_sample_ddir(s), s->bs);
for (j = 0; j < FIO_IO_U_PLAT_NR - stride; j += stride) {
- fprintf(f, "%lu, ", hist_sum(j, stride, io_u_plat, NULL));
+ fprintf(f, "%llu, ", (unsigned long long)hist_sum(j, stride, io_u_plat, NULL));
hist_sum(FIO_IO_U_PLAT_NR - stride, stride, io_u_plat, NULL));
}
hist_sum(FIO_IO_U_PLAT_NR - stride, stride, io_u_plat, NULL));
}
pdu = convert_iolog(cmd, &store_direct);
if (!pdu) {
log_err("fio: failed converting IO log\n");
pdu = convert_iolog(cmd, &store_direct);
if (!pdu) {
log_err("fio: failed converting IO log\n");
}
/* generate a unique pathname for the log file using hostname */
sprintf(log_pathname, "%s.%s", pdu->name, client->hostname);
if (store_direct) {
}
/* generate a unique pathname for the log file using hostname */
sprintf(log_pathname, "%s.%s", pdu->name, client->hostname);
if (store_direct) {
if (fd < 0) {
log_err("fio: open log %s: %s\n",
log_pathname, strerror(errno));
if (fd < 0) {
log_err("fio: open log %s: %s\n",
log_pathname, strerror(errno));
} else {
FILE *f;
f = fopen((const char *) log_pathname, "w");
if (!f) {
log_err("fio: fopen log %s : %s\n",
log_pathname, strerror(errno));
} else {
FILE *f;
f = fopen((const char *) log_pathname, "w");
if (!f) {
log_err("fio: fopen log %s : %s\n",
log_pathname, strerror(errno));
err = inflate(&stream, Z_NO_FLUSH);
/* may be Z_OK, or Z_STREAM_END */
if (err < 0) {
err = inflate(&stream, Z_NO_FLUSH);
/* may be Z_OK, or Z_STREAM_END */
if (err < 0) {
s = __get_sample(samples, ret->log_offset, i);
if (ret->log_type == IO_LOG_TYPE_HIST)
s = __get_sample(samples, ret->log_offset, i);
if (ret->log_type == IO_LOG_TYPE_HIST)
dprint(FD_NET, "client: got cmd op %s from %s (pdu=%u)\n",
fio_server_op(cmd->opcode), client->hostname, cmd->pdu_len);
dprint(FD_NET, "client: got cmd op %s from %s (pdu=%u)\n",
fio_server_op(cmd->opcode), client->hostname, cmd->pdu_len);
struct cmd_ts_pdu *p = (struct cmd_ts_pdu *) cmd->payload;
dprint(FD_NET, "client: ts->ss_state = %u\n", (unsigned int) le32_to_cpu(p->ts.ss_state));
struct cmd_ts_pdu *p = (struct cmd_ts_pdu *) cmd->payload;
dprint(FD_NET, "client: ts->ss_state = %u\n", (unsigned int) le32_to_cpu(p->ts.ss_state));
dprint(FD_NET, "client: received steadystate ring buffers\n");
size = le64_to_cpu(p->ts.ss_dur);
dprint(FD_NET, "client: received steadystate ring buffers\n");
size = le64_to_cpu(p->ts.ss_dur);
client->state = Client_stopped;
client->error = le32_to_cpu(pdu->error);
client->signal = le32_to_cpu(pdu->signal);
client->state = Client_stopped;
client->error = le32_to_cpu(pdu->error);
client->signal = le32_to_cpu(pdu->signal);
dprint(FD_NET, "client: request eta (%d)\n", nr_clients);
eta = calloc(1, sizeof(*eta) + __THREAD_RUNSTR_SZ(REAL_MAX_JOBS));
dprint(FD_NET, "client: request eta (%d)\n", nr_clients);
eta = calloc(1, sizeof(*eta) + __THREAD_RUNSTR_SZ(REAL_MAX_JOBS));
static int handle_cmd_timeout(struct fio_client *client,
struct fio_net_cmd_reply *reply)
{
static int handle_cmd_timeout(struct fio_client *client,
struct fio_net_cmd_reply *reply)
{
reply = flist_entry(entry, struct fio_net_cmd_reply, list);
if (mtime_since(&reply->ts, now) < FIO_NET_CLIENT_TIMEOUT)
continue;
reply = flist_entry(entry, struct fio_net_cmd_reply, list);
if (mtime_since(&reply->ts, now) < FIO_NET_CLIENT_TIMEOUT)
continue;
if (!handle_cmd_timeout(client, reply))
continue;
log_err("fio: client %s, timeout on cmd %s\n", client->hostname,
if (!handle_cmd_timeout(client, reply))
continue;
log_err("fio: client %s, timeout on cmd %s\n", client->hostname,
request_client_etas(ops);
memcpy(&eta_ts, &ts, sizeof(ts));
request_client_etas(ops);
memcpy(&eta_ts, &ts, sizeof(ts));