David reports:
I'm using "fio --showcmd file.job" to convert a script to plain
commandline arguments and this fails if the directory specified in job
file does not exist. While this has to be an error if the job is being
executed, it should not be in context of --showcmd.
To reproduce:
$ cat job.fio
[global]
directory=/x
$ fio --showcmd job.fio
fio: /x is not a directory
fio: failed parsing directory=/x
fio: job global dropped
Expected output:
fio --directory=/x
Signed-off-by: Jens Axboe <axboe@kernel.dk>
extern void add_job_opts(const char **, int);
extern char *num2str(unsigned long, int, int, int, int);
extern int ioengine_load(struct thread_data *);
+extern int parse_dryrun(void);
extern uintptr_t page_mask;
extern uintptr_t page_size;
return buf;
}
+
+int parse_dryrun(void)
+{
+ return dump_cmdline || parse_only;
+}
+
/*
* Adds a job to the list of things todo. Sanitizes the various options
* to make sure we don't have conflicts, and initializes various
/*
* if we are just dumping the output command line, don't add the job
*/
- if (dump_cmdline || parse_only) {
+ if (parse_dryrun()) {
put_job(td);
return 0;
}
fio_options_free(&def_thread);
if (!thread_number) {
- if (dump_cmdline || parse_only)
+ if (parse_dryrun())
return 0;
if (exec_profile)
return 0;
struct thread_data *td = data;
struct stat sb;
+ if (parse_dryrun())
+ return 0;
+
if (lstat(td->o.directory, &sb) < 0) {
int ret = errno;