summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordonny372 <51675586+donny372@users.noreply.github.com>2020-06-17 12:58:22 -0700
committerShundong Zhou <shundong@google.com>2020-08-07 17:14:38 -0700
commitd19c04d12b6996c4b9f6f4e27dd5a7570eea1ddc (patch)
tree2b44d2cc4bdcc3212df571b764b3449ebc90423f
parent1a953d975847e248be1718105621796bf9481878 (diff)
downloadfio-d19c04d12b6996c4b9f6f4e27dd5a7570eea1ddc.tar.gz
fio-d19c04d12b6996c4b9f6f4e27dd5a7570eea1ddc.tar.bz2
Add support for reading iolog from stdin.
Add support for reading iolog from stdin and update HOWTO and man page. Fixes: https://github.com/axboe/fio/issues/997 Signed-off-by: Shundong Zhou <donny372@gmail.com>
-rw-r--r--HOWTO3
-rw-r--r--fio.14
-rw-r--r--init.c12
-rw-r--r--iolog.c2
4 files changed, 20 insertions, 1 deletions
diff --git a/HOWTO b/HOWTO
index 8cf8d650..3c8fbd83 100644
--- a/HOWTO
+++ b/HOWTO
@@ -2613,6 +2613,9 @@ I/O replay
character. See the :option:`filename` option for information on how to
escape ':' characters within the file names. These files will
be sequentially assigned to job clones created by :option:`numjobs`.
+ '-' is a reserved name, meaning read from stdin, notably if
+ :option:`filename` is set to '-' which means stdin as well, then
+ this flag can't be set to '-'.
.. option:: read_iolog_chunked=bool
diff --git a/fio.1 b/fio.1
index f134e0bf..71ea0731 100644
--- a/fio.1
+++ b/fio.1
@@ -2327,7 +2327,9 @@ replay, the file needs to be turned into a blkparse binary data file first
You can specify a number of files by separating the names with a ':' character.
See the \fBfilename\fR option for information on how to escape ':'
characters within the file names. These files will be sequentially assigned to
-job clones created by \fBnumjobs\fR.
+job clones created by \fBnumjobs\fR. '-' is a reserved name, meaning read from
+stdin, notably if \fBfilename\fR is set to '-' which means stdin as well,
+then this flag can't be set to '-'.
.TP
.BI read_iolog_chunked \fR=\fPbool
Determines how iolog is read. If false (default) entire \fBread_iolog\fR will
diff --git a/init.c b/init.c
index e53be35a..e4a9ba6b 100644
--- a/init.c
+++ b/init.c
@@ -2062,6 +2062,18 @@ static int __parse_jobs_ini(struct thread_data *td,
}
ret = fio_options_parse(td, opts, num_opts);
+
+ if (!ret) {
+ if (!strcmp(file, "-") && td->o.read_iolog_file != NULL) {
+ char *fname = get_name_by_idx(td->o.read_iolog_file,
+ td->subjob_number);
+ if (!strcmp(fname, "-")) {
+ log_err("fio: we can't read both iolog "
+ "and job file from stdin.\n");
+ ret = 1;
+ }
+ }
+ }
if (!ret) {
if (dump_cmdline)
dump_opt_list(td);
diff --git a/iolog.c b/iolog.c
index 4a79fc46..d5a18582 100644
--- a/iolog.c
+++ b/iolog.c
@@ -619,6 +619,8 @@ static bool init_iolog_read(struct thread_data *td)
fd = open_socket(fname);
if (fd >= 0)
f = fdopen(fd, "r");
+ } else if (!strcmp(fname, "-")) {
+ f = stdin;
} else
f = fopen(fname, "r");