Skip to contentSkip to conversation

Recent changes (master)

PATCH Jens Axboe 1 participant 1 message Aug 15, 2015

lore
Share & tools
lore

Jens Axboe

author
#0 lore raw

The following changes since commit 92060d6c59f1848e86cd9ddd7550907c79bda3d5:

arch-ppc.h: Add ilog2 implementation for ppc64 (2015-08-13 12:45:20 -0600)

are available in the git repository at:

git://git.kernel.dk/fio.git master

for you to fetch changes up to 75f90d5f9859e985feee8b6aca7b913d15fd2296:

filesetup: make random generator block auto-switch on huge files (2015-08-14 12:25:20 -0600)

----------------------------------------------------------------
Jens Axboe (3):
eta: ensure we include terminating 0 space in je->run_str[]
client: make it explicit that we don't reuse 'eta' after freeing it
filesetup: make random generator block auto-switch on huge files

 client.c    | 25 +++++++++++++++----------
 client.h    |  1 -
 eta.c       |  2 +-
 filesetup.c | 46 ++++++++++++++++++++++++++++++++++++++--------
 4 files changed, 54 insertions(+), 20 deletions(-)

---

Diff of recent changes:

client.c +15 -10
index af3407c..110a01b 100644
@@ -184,6 +184,17 @@ void fio_put_client(struct fio_client *client)
 	free(client);
 }
 
+static int fio_client_dec_jobs_eta(struct client_eta *eta, client_eta_op eta_fn)
+{
+	if (!--eta->pending) {
+		eta_fn(&eta->eta);
+		free(eta);
+		return 0;
+	}
+
+	return 1;
+}
+
 static void remove_client(struct fio_client *client)
 {
 	assert(client->refs);
@@ -1091,14 +1102,6 @@ void fio_client_sum_jobs_eta(struct jobs_eta *dst, struct jobs_eta *je)
 	strcpy((char *) dst->run_str, (char *) je->run_str);
 }
 
-void fio_client_dec_jobs_eta(struct client_eta *eta, client_eta_op eta_fn)
-{
-	if (!--eta->pending) {
-		eta_fn(&eta->eta);
-		free(eta);
-	}
-}
-
 static void remove_reply_cmd(struct fio_client *client, struct fio_net_cmd *cmd)
 {
 	struct fio_net_cmd_reply *reply = NULL;
@@ -1573,8 +1576,10 @@ static void request_client_etas(struct client_ops *ops)
 					(uintptr_t) eta, &client->cmd_list);
 	}
 
-	while (skipped--)
-		fio_client_dec_jobs_eta(eta, ops->eta);
+	while (skipped--) {
+		if (!fio_client_dec_jobs_eta(eta, ops->eta))
+			break;
+	}
 
 	dprint(FD_NET, "client: requested eta tag %p\n", eta);
 }
client.h +0 -1
index 8818de2..cfb0b4d 100644
@@ -111,7 +111,6 @@ struct client_eta {
 };
 
 extern int fio_handle_client(struct fio_client *);
-extern void fio_client_dec_jobs_eta(struct client_eta *eta, client_eta_op fn);
 extern void fio_client_sum_jobs_eta(struct jobs_eta *dst, struct jobs_eta *je);
 
 enum {
eta.c +1 -1
index db045cb..3e8eb0b 100644
@@ -590,7 +590,7 @@ struct jobs_eta *get_jobs_eta(int force, size_t *size)
 	if (!thread_number)
 		return NULL;
 
-	*size = sizeof(*je) + THREAD_RUNSTR_SZ;
+	*size = sizeof(*je) + THREAD_RUNSTR_SZ + 1;
 	je = malloc(*size);
 	if (!je)
 		return NULL;
filesetup.c +38 -8

59 lines not on this page · raw message