Document that "-o" does not work when specyfing multiple devices to
blktrace, also: enforce this by stopping blktrace when one tries do
do this.
The technical reason why "-o" doesn't work with multiple devices is
because we use multiple threads of execution - one per device/CPU pair -
and each of them opens a file named "<prefix>.blktrace.<cpu>". With the
"-o" all of the "<prefix>" values are the same - so multiple threads
open the same file and try to do output. Not good. Without the "-o"
we get unique files named: "<device>.blktrace.<cpu>" - as the tuple
(<device>,<cpu>) is unique.
Signed-off-by: Alan D. Brunelle <Alan.Brunelle@hp.com>
goto out;
}
+ if (ndevs > 1 && output_name && strcmp(output_name, "-") != 0) {
+ fprintf(stderr, "-o not supported with multiple devices\n");
+ ret = 1;
+ goto out;
+ }
+
signal(SIGINT, handle_sigint);
signal(SIGHUP, handle_sigint);
signal(SIGTERM, handle_sigint);
\-\-output=\fIfile\fR
.RS
Prepend \fIfile\fR to output file name(s)
+
+This only works when supplying a single device, or when piping the output
+via "-o -" with multiple devices.
.RE
\-r \fIrel-path\fR
-d \emph{dev} & --dev=\emph{dev} & Adds \emph{dev} as a device to trace \\ \hline
-k & --kill & Kill on-going trace \\ \hline
-n \emph{num-sub} & --num-sub=\emph{num-sub} & Specifies number of buffers to use \\ \hline
--o \emph{file} & --output=\emph{file} & Prepend \emph{file} to output file name(s) \\ \hline
+-o \emph{file} & --output=\emph{file} & Prepend \emph{file} to output file name(s) \\
+ & & \textbf{This only works when using a single device} \\
+ & & \textbf{or when piping the output via \texttt{-o -}} \\
+ & & \textbf{with multiple devices.} \\ \hline
-r \emph{rel-path} & --relay=\emph{rel-path} & Specifies debugfs mount point \\ \hline
-V & --version & Outputs version \\ \hline
-w \emph{seconds} & --stopwatch=\emph{seconds} & Sets run time to the number of seconds specified \\ \hline