[PATCH] Add option to specify the exact file used

Fio typically just makes up a filename for a job, but sometimes you want
to explicitly reuse the same file for multiple jobs. Add a filename=
option to cater to that.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/init.c b/init.c
index a0ab7d2..e314d6c 100644
--- a/init.c
+++ b/init.c
@@ -169,7 +169,12 @@
 	if (td->odirect)
 		td->io_ops->flags |= FIO_RAWIO;
 
-	if (td->filetype == FIO_TYPE_FILE) {
+	if (td->filename)
+		td->nr_uniq_files = 1;
+	else
+		td->nr_uniq_files = td->nr_files;
+
+	if (td->filetype == FIO_TYPE_FILE || td->filename) {
 		char tmp[PATH_MAX];
 		int len = 0;
 		int i;
@@ -184,7 +189,10 @@
 			f->fd = -1;
 			f->fileno = i;
 
-			sprintf(tmp + len, "%s.%d.%d", jobname, td->thread_number, i);
+			if (td->filename)
+				sprintf(tmp + len, "%s", td->filename);
+			else
+				sprintf(tmp + len, "%s.%d.%d", jobname, td->thread_number, i);
 			f->file_name = strdup(tmp);
 		}
 	} else {
@@ -898,6 +906,11 @@
 				fgetpos(f, &off);
 				continue;
 			}
+			if (!check_strstore(p, "filename", tmpbuf)) {
+				td->filename = strdup(tmpbuf);
+				fgetpos(f, &off);
+				continue;
+			}
 			if (!check_strstore(p, "name", tmpbuf)) {
 				snprintf(td->name, sizeof(td->name)-1, "%s%d", tmpbuf, td->thread_number);
 				fgetpos(f, &off);