- switch (cmd->opcode) {
- case FIO_NET_CMD_QUIT:
- remove_client(client);
- free(cmd);
- done = 1;
- break;
- case FIO_NET_CMD_TEXT: {
- const char *buf = (const char *) cmd->payload;
- int fio_unused ret;
-
- if (!client->skip_newline)
- fprintf(f_out, "<%s> ", client->hostname);
- ret = fwrite(buf, cmd->pdu_len, 1, f_out);
- fflush(f_out);
- client->skip_newline = strchr(buf, '\n') == NULL;
- free(cmd);
- break;
- }
- case FIO_NET_CMD_TS:
- handle_ts(cmd);
- free(cmd);
- break;
- case FIO_NET_CMD_GS:
- handle_gs(cmd);
- free(cmd);
- break;
- case FIO_NET_CMD_ETA:
- handle_eta(cmd);
- free(cmd);
- break;
- case FIO_NET_CMD_PROBE:
- handle_probe(cmd);
- free(cmd);
- break;
- case FIO_NET_CMD_START:
- client->state = Client_started;
- free(cmd);
- break;
- case FIO_NET_CMD_STOP:
- client->state = Client_stopped;
- free(cmd);
- break;
- default:
- log_err("fio: unknown client op: %d\n", cmd->opcode);
- free(cmd);
- break;
+ dprint(FD_NET, "client: got cmd op %s from %s\n",
+ fio_server_op(cmd->opcode), client->hostname);
+
+ switch (cmd->opcode) {
+ case FIO_NET_CMD_QUIT:
+ remove_client(client);
+ free(cmd);
+ break;
+ case FIO_NET_CMD_TEXT: {
+ const char *buf = (const char *) cmd->payload;
+ const char *name;
+ int fio_unused ret;
+
+ name = client->name ? client->name : client->hostname;
+
+ if (!client->skip_newline)
+ fprintf(f_out, "<%s> ", name);
+ ret = fwrite(buf, cmd->pdu_len, 1, f_out);
+ fflush(f_out);
+ client->skip_newline = strchr(buf, '\n') == NULL;
+ free(cmd);
+ break;
+ }
+ case FIO_NET_CMD_TS:
+ handle_ts(cmd);
+ free(cmd);
+ break;
+ case FIO_NET_CMD_GS:
+ handle_gs(cmd);
+ free(cmd);
+ break;
+ case FIO_NET_CMD_ETA:
+ remove_reply_cmd(client, cmd);
+ handle_eta(client, cmd);
+ free(cmd);
+ break;
+ case FIO_NET_CMD_PROBE:
+ remove_reply_cmd(client, cmd);
+ handle_probe(client, cmd);
+ free(cmd);
+ break;
+ case FIO_NET_CMD_START:
+ client->state = Client_started;
+ free(cmd);
+ break;
+ case FIO_NET_CMD_STOP:
+ client->state = Client_stopped;
+ free(cmd);
+ break;
+ default:
+ log_err("fio: unknown client op: %s\n", fio_server_op(cmd->opcode));
+ free(cmd);
+ break;
+ }
+
+ return 1;
+}
+
+static void request_client_etas(void)
+{
+ struct fio_client *client;
+ struct flist_head *entry;
+ struct client_eta *eta;
+ int skipped = 0;
+
+ dprint(FD_NET, "client: request eta (%d)\n", nr_clients);
+
+ eta = malloc(sizeof(*eta));
+ memset(&eta->eta, 0, sizeof(eta->eta));
+ eta->pending = nr_clients;
+
+ flist_for_each(entry, &client_list) {
+ client = flist_entry(entry, struct fio_client, list);
+
+ if (!flist_empty(&client->eta_list)) {
+ skipped++;
+ continue;