[PATCH] Cleanup iolog handling

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/log.c b/log.c
index 00e3913..51eaee6 100644
--- a/log.c
+++ b/log.c
@@ -82,44 +82,29 @@
 	free(td->iolog_buf);
 }
 
-int init_iolog(struct thread_data *td)
+/*
+ * Open a stored log and read in the entries.
+ */
+static int init_iolog_read(struct thread_data *td)
 {
 	unsigned long long offset;
 	unsigned int bytes;
 	char *str, *p;
 	FILE *f;
-	int rw, i, reads, writes;
+	int rw, reads, writes;
 
-	if (!td->read_iolog && !td->write_iolog)
-		return 0;
-
-	if (td->read_iolog)
-		f = fopen(td->iolog_file, "r");
-	else
-		f = fopen(td->iolog_file, "w");
-
+	f = fopen(td->iolog_file, "r");
 	if (!f) {
-		perror("fopen iolog");
-		printf("file %s, %d/%d\n", td->iolog_file, td->read_iolog, td->write_iolog);
+		perror("fopen read iolog");
 		return 1;
 	}
 
 	/*
-	 * That's it for writing, setup a log buffer and we're done.
-	  */
-	if (td->write_iolog) {
-		td->iolog_f = f;
-		td->iolog_buf = malloc(8192);
-		setvbuf(f, td->iolog_buf, _IOFBF, 8192);
-		return 0;
-	}
-
-	/*
 	 * Read in the read iolog and store it, reuse the infrastructure
 	 * for doing verifications.
 	 */
 	str = malloc(4096);
-	reads = writes = i = 0;
+	reads = writes = 0;
 	while ((p = fgets(str, 4096, f)) != NULL) {
 		struct io_piece *ipo;
 
@@ -144,16 +129,14 @@
 			td->max_bs = bytes;
 		ipo->ddir = rw;
 		list_add_tail(&ipo->list, &td->io_log_list);
-		i++;
 	}
 
 	free(str);
 	fclose(f);
 
-	if (!i)
+	if (!reads && !writes)
 		return 1;
-
-	if (reads && !writes)
+	else if (reads && !writes)
 		td->ddir = DDIR_READ;
 	else if (!reads && writes)
 		td->ddir = DDIR_READ;
@@ -163,6 +146,38 @@
 	return 0;
 }
 
+/*
+ * Setup a log for storing io patterns.
+ */
+static int init_iolog_write(struct thread_data *td)
+{
+	FILE *f = fopen(td->iolog_file, "w");
+
+	f = fopen(td->iolog_file, "w");
+	if (!f) {
+		perror("fopen write iolog");
+		return 1;
+	}
+
+	/*
+	 * That's it for writing, setup a log buffer and we're done.
+	  */
+	td->iolog_f = f;
+	td->iolog_buf = malloc(8192);
+	setvbuf(f, td->iolog_buf, _IOFBF, 8192);
+	return 0;
+}
+
+int init_iolog(struct thread_data *td)
+{
+	if (td->read_iolog)
+		return init_iolog_read(td);
+	else if (td->write_iolog)
+		return init_iolog_write(td);
+
+	return 0;
+}
+
 int setup_rate(struct thread_data *td)
 {
 	int nr_reads_per_sec;