Fixup two compile warnings
[fio.git] / init.c
diff --git a/init.c b/init.c
index 0a6766e39f1a082dc78a815b307d36d289684ae7..6b6e386e398a04b4d8e27c7a034e6cd66e58025c 100644 (file)
--- a/init.c
+++ b/init.c
@@ -47,7 +47,6 @@ static char **job_sections;
 static int nr_job_sections;
 
 int exitall_on_terminate = 0;
-int exitall_on_terminate_error = 0;
 int output_format = FIO_OUTPUT_NORMAL;
 int eta_print = FIO_ETA_AUTO;
 int eta_new_line = 0;
@@ -114,7 +113,7 @@ static struct option l_opts[FIO_NR_OPTIONS] = {
        },
        {
                .name           = (char *) "output-format",
-               .has_arg        = optional_argument,
+               .has_arg        = required_argument,
                .val            = 'F' | FIO_CLIENT_FLAG,
        },
        {
@@ -310,7 +309,7 @@ static void free_shm(void)
        free(trigger_remote_cmd);
        trigger_file = trigger_cmd = trigger_remote_cmd = NULL;
 
-       options_free(fio_options, &def_thread);
+       options_free(fio_options, &def_thread.o);
        fio_filelock_exit();
        scleanup();
 }
@@ -677,7 +676,7 @@ static int fixup_options(struct thread_data *td)
                        "verify limited\n");
                ret = warnings_fatal;
        }
-       if (o->bs_unaligned && (o->odirect || td->io_ops->flags & FIO_RAWIO))
+       if (o->bs_unaligned && (o->odirect || td_ioengine_flagged(td, FIO_RAWIO)))
                log_err("fio: bs_unaligned may not work with raw io\n");
 
        /*
@@ -764,7 +763,7 @@ static int fixup_options(struct thread_data *td)
 
        if (o->pre_read) {
                o->invalidate_cache = 0;
-               if (td->io_ops->flags & FIO_PIPEIO) {
+               if (td_ioengine_flagged(td, FIO_PIPEIO)) {
                        log_info("fio: cannot pre-read files with an IO engine"
                                 " that isn't seekable. Pre-read disabled.\n");
                        ret = warnings_fatal;
@@ -772,7 +771,7 @@ static int fixup_options(struct thread_data *td)
        }
 
        if (!o->unit_base) {
-               if (td->io_ops->flags & FIO_BIT_BASED)
+               if (td_ioengine_flagged(td, FIO_BIT_BASED))
                        o->unit_base = 1;
                else
                        o->unit_base = 8;
@@ -795,7 +794,7 @@ static int fixup_options(struct thread_data *td)
         * Windows doesn't support O_DIRECT or O_SYNC with the _open interface,
         * so fail if we're passed those flags
         */
-       if ((td->io_ops->flags & FIO_SYNCIO) && (td->o.odirect || td->o.sync_io)) {
+       if (td_ioengine_flagged(td, FIO_SYNCIO) && (td->o.odirect || td->o.sync_io)) {
                log_err("fio: Windows does not support direct or non-buffered io with"
                                " the synchronous ioengines. Use the 'windowsaio' ioengine"
                                " with 'direct=1' and 'iodepth=1' instead.\n");
@@ -844,7 +843,7 @@ static int fixup_options(struct thread_data *td)
        if (fio_option_is_set(&td->o, rand_seed))
                td->o.rand_repeatable = 0;
 
-       if ((td->io_ops->flags & FIO_NOEXTEND) && td->o.file_append) {
+       if (td_ioengine_flagged(td, FIO_NOEXTEND) && td->o.file_append) {
                log_err("fio: can't append/extent with IO engine %s\n", td->io_ops->name);
                ret = 1;
        }
@@ -904,26 +903,6 @@ static const char *get_engine_name(const char *str)
        return p;
 }
 
-static int exists_and_not_regfile(const char *filename)
-{
-       struct stat sb;
-
-       if (lstat(filename, &sb) == -1)
-               return 0;
-
-#ifndef WIN32 /* NOT Windows */
-       if (S_ISREG(sb.st_mode))
-               return 0;
-#else
-       /* \\.\ is the device namespace in Windows, where every file
-        * is a device node */
-       if (S_ISREG(sb.st_mode) && strncmp(filename, "\\\\.\\", 4) != 0)
-               return 0;
-#endif
-
-       return 1;
-}
-
 static void init_rand_file_service(struct thread_data *td)
 {
        unsigned long nranges = td->o.nr_files << FIO_FSERVICE_SHIFT;
@@ -1069,6 +1048,10 @@ int ioengine_load(struct thread_data *td)
                *(struct thread_data **)td->eo = td;
        }
 
+       if (td->o.odirect)
+               td->io_ops->flags |= FIO_RAWIO;
+
+       td_set_ioengine_flags(td);
        return 0;
 }
 
@@ -1244,7 +1227,7 @@ static char *make_filename(char *buf, size_t buf_size,struct thread_options *o,
        return buf;
 }
 
-int parse_dryrun(void)
+bool parse_dryrun(void)
 {
        return dump_cmdline || parse_only;
 }
@@ -1340,9 +1323,6 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
        if (ioengine_load(td))
                goto err;
 
-       if (o->odirect)
-               td->io_ops->flags |= FIO_RAWIO;
-
        file_alloced = 0;
        if (!o->filename && !td->files_index && !o->read_iolog_file) {
                file_alloced = 1;
@@ -1373,7 +1353,7 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
        if (td->eo)
                *(struct thread_data **)td->eo = NULL;
 
-       if (td->io_ops->flags & FIO_DISKLESSIO) {
+       if (td_ioengine_flagged(td, FIO_DISKLESSIO)) {
                struct fio_file *f;
 
                for_each_file(td, f, i)
@@ -1458,6 +1438,13 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
                };
                const char *suf;
 
+#ifndef CONFIG_ZLIB
+               if (td->client_type) {
+                       log_err("fio: --write_hist_log requires zlib in client/server mode\n");
+                       goto err;
+               }
+#endif
+
                if (p.log_gz_store)
                        suf = "log.fz";
                else
@@ -1537,7 +1524,7 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
                        if (is_backend && !recursed)
                                fio_server_send_add_job(td);
 
-                       if (!(td->io_ops->flags & FIO_NOIO)) {
+                       if (!td_ioengine_flagged(td, FIO_NOIO)) {
                                char *c1, *c2, *c3, *c4;
                                char *c5 = NULL, *c6 = NULL;
 
@@ -2352,12 +2339,6 @@ int parse_cmd_line(int argc, char *argv[], int client_type)
                        output_format = FIO_OUTPUT_TERSE;
                        break;
                case 'F':
-                       if (!optarg) {
-                               log_err("fio: missing --output-format argument\n");
-                               exit_val = 1;
-                               do_exit++;
-                               break;
-                       }
                        if (parse_output_format(optarg)) {
                                log_err("fio: failed parsing output-format\n");
                                exit_val = 1;