Recent changes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The following changes since commit 58a525d85eecbab1131d6d54e24b8b9c0dd906d6:

  example: add SSD steady state test case (2012-08-22 20:44:24 +0200)

are available in the git repository at:
  git://git.kernel.dk/fio.git master

Jens Axboe (2):
      client: support per-client job files
      README: update for newer client job file argument format

 README   |    2 +-
 client.c |   33 ++++++++++++++++++++++++++++++++-
 init.c   |   17 +++++++++++++++++
 server.h |    1 +
 4 files changed, 51 insertions(+), 2 deletions(-)

---

Diff of recent changes:

diff --git a/README b/README
index c21fb6a..8bce835 100644
--- a/README
+++ b/README
@@ -362,7 +362,7 @@ are sent to the server. The 'server' string follows the same format as it
 does on the server side, to allow IP/hostname/socket and port strings.
 You can connect to multiple clients as well, to do that you could run:
 
-fio --client=server2 --client=server2 <job file(s)>
+fio --client=server2 <job file(s)> --client=server2 <job file(s)>
 
 
 Platforms
diff --git a/client.c b/client.c
index 7c99109..50c1704 100644
--- a/client.c
+++ b/client.c
@@ -58,6 +58,9 @@ struct fio_client {
 
 	uint16_t argc;
 	char **argv;
+
+	char **ini_file;
+	unsigned int nr_ini_file;
 };
 
 static struct timeval eta_tv;
@@ -151,6 +154,10 @@ static void remove_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);
 	nr_clients--;
@@ -193,6 +200,19 @@ void fio_client_add_cmd_option(void *cookie, const char *opt)
 	}
 }
 
+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(const char *hostname, void **cookie)
 {
 	struct fio_client *existing = *cookie;
@@ -521,7 +541,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);
 
 		client->sent_job = 1;
diff --git a/init.c b/init.c
index 475a6ad..824828c 100644
--- a/init.c
+++ b/init.c
@@ -1534,6 +1534,18 @@ int parse_cmd_line(int argc, char *argv[])
 				exit_val = 1;
 				break;
 			}
+			/*
+			 * If the next argument exists and isn't an option,
+			 * assume it's a job file for this client only.
+			 */
+			while (optind < argc) {
+				if (!strncmp(argv[optind], "--", 2) ||
+				    !strncmp(argv[optind], "-", 1))
+					break;
+
+				fio_client_add_ini_file(cur_client, argv[optind]);
+				optind++;
+			}
 			break;
 		default:
 			do_exit++;
@@ -1604,6 +1616,11 @@ int parse_options(int argc, char *argv[])
 				free(ini_file[i]);
 			}
 		}
+	} else if (nr_clients) {
+		if (fill_def_thread())
+			return 1;
+		if (fio_clients_send_ini(NULL))
+			return 1;
 	}
 
 	free(ini_file);
diff --git a/server.h b/server.h
index 6d5a83d..9bf8907 100644
--- a/server.h
+++ b/server.h
@@ -124,6 +124,7 @@ extern int fio_clients_send_ini(const char *);
 extern int fio_handle_clients(void);
 extern int fio_client_add(const char *, void **);
 extern void fio_client_add_cmd_option(void *, const char *);
+extern void fio_client_add_ini_file(void *, const char *);
 
 extern int fio_recv_data(int sk, void *p, unsigned int len);
 extern int fio_send_data(int sk, const void *p, unsigned int len);
--
To unsubscribe from this list: send the line "unsubscribe fio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux