free(client);
}
-static void __fio_client_add_cmd_option(struct fio_client *client,
- const char *opt)
+static int __fio_client_add_cmd_option(struct fio_client *client,
+ const char *opt)
{
int index;
+ if (client->argc == FIO_NET_CMD_JOBLINE_ARGV) {
+ log_err("fio: max cmd line number reached.\n");
+ log_err("fio: cmd line <%s> has been ignored.\n", opt);
+ return 1;
+ }
+
index = client->argc++;
client->argv = realloc(client->argv, sizeof(char *) * client->argc);
client->argv[index] = strdup(opt);
dprint(FD_NET, "client: add cmd %d: %s\n", index, opt);
+ return 0;
}
-void fio_client_add_cmd_option(const char *hostname, const char *opt)
+int fio_client_add_cmd_option(const char *hostname, const char *opt)
{
struct fio_client *client;
if (!hostname || !opt)
- return;
+ return 0;
client = find_client_by_name(hostname);
if (!client) {
log_err("fio: unknown client %s\n", hostname);
- return;
+ return 1;
}
- __fio_client_add_cmd_option(client, opt);
+ return __fio_client_add_cmd_option(client, opt);
}
void fio_client_add(const char *hostname)
static int handle_client(struct fio_client *client, int one)
{
struct fio_net_cmd *cmd;
- int done = 0;
+ int done = 0, did_cmd = 0;
dprint(FD_NET, "client: handle %s\n", client->hostname);
while ((cmd = fio_net_recv_cmd(client->fd, 1)) != NULL) {
- dprint(FD_NET, "%s: got cmd op %d\n", client->hostname,
- cmd->opcode);
+ did_cmd++;
+
+ dprint(FD_NET, "client: got cmd op %d from %s\n",
+ cmd->opcode, client->hostname);
switch (cmd->opcode) {
case FIO_NET_CMD_QUIT:
int fio_unused ret;
if (!client->skip_newline)
- fprintf(f_out, "Client <%s>: ", client->hostname);
+ 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;
break;
}
- return 0;
+ return did_cmd;
}
int fio_handle_clients(void)