Merge branch 'sphinx-doc' of https://github.com/termim/fio
authorJens Axboe <axboe@fb.com>
Fri, 20 Jan 2017 02:50:09 +0000 (19:50 -0700)
committerJens Axboe <axboe@fb.com>
Fri, 20 Jan 2017 02:50:09 +0000 (19:50 -0700)
12 files changed:
backend.c
engines/binject.c
engines/mmap.c
engines/sg.c
file.h
filesetup.c
fio.h
init.c
ioengines.c
options.c
parse.c
parse.h

index a46101c..4570d8d 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -2055,7 +2055,7 @@ static bool check_mount_writes(struct thread_data *td)
                return false;
 
        for_each_file(td, f, i) {
-               if (f->filetype != FIO_TYPE_BD)
+               if (f->filetype != FIO_TYPE_BLOCK)
                        continue;
                if (device_is_mounted(f->file_name))
                        goto mounted;
index 7d20a3f..932534a 100644 (file)
@@ -351,7 +351,7 @@ static int fio_binject_open_file(struct thread_data *td, struct fio_file *f)
        if (ret)
                return 1;
 
-       if (f->filetype != FIO_TYPE_BD) {
+       if (f->filetype != FIO_TYPE_BLOCK) {
                log_err("fio: binject only works with block devices\n");
                goto err_close;
        }
index 99e1d6a..bc038f4 100644 (file)
@@ -67,7 +67,7 @@ static int fio_mmap_file(struct thread_data *td, struct fio_file *f,
        }
 
 #ifdef FIO_MADV_FREE
-       if (f->filetype == FIO_TYPE_BD)
+       if (f->filetype == FIO_TYPE_BLOCK)
                (void) posix_madvise(fmd->mmap_ptr, fmd->mmap_sz, FIO_MADV_FREE);
 #endif
 
index 3f7d911..2148e87 100644 (file)
@@ -252,7 +252,7 @@ static int fio_sgio_doio(struct thread_data *td, struct io_u *io_u, int do_sync)
        struct fio_file *f = io_u->file;
        int ret;
 
-       if (f->filetype == FIO_TYPE_BD) {
+       if (f->filetype == FIO_TYPE_BLOCK) {
                ret = fio_sgio_ioctl_doio(td, f, io_u);
                td->error = io_u->error;
        } else {
@@ -504,7 +504,7 @@ static int fio_sgio_type_check(struct thread_data *td, struct fio_file *f)
        unsigned int bs = 0;
        unsigned long long max_lba = 0;
 
-       if (f->filetype == FIO_TYPE_BD) {
+       if (f->filetype == FIO_TYPE_BLOCK) {
                if (ioctl(f->fd, BLKSSZGET, &bs) < 0) {
                        td_verror(td, errno, "ioctl");
                        return 1;
@@ -537,7 +537,7 @@ static int fio_sgio_type_check(struct thread_data *td, struct fio_file *f)
                        MAX_10B_LBA, max_lba);
        }
 
-       if (f->filetype == FIO_TYPE_BD) {
+       if (f->filetype == FIO_TYPE_BLOCK) {
                td->io_ops->getevents = NULL;
                td->io_ops->event = NULL;
        }
@@ -789,7 +789,7 @@ static int fio_sgio_get_file_size(struct thread_data *td, struct fio_file *f)
        if (fio_file_size_known(f))
                return 0;
 
-       if (f->filetype != FIO_TYPE_BD && f->filetype != FIO_TYPE_CHAR) {
+       if (f->filetype != FIO_TYPE_BLOCK && f->filetype != FIO_TYPE_CHAR) {
                td_verror(td, EINVAL, "wrong file type");
                log_err("ioengine sg only works on block or character devices\n");
                return 1;
diff --git a/file.h b/file.h
index 6f34dd5..ac00ff8 100644 (file)
--- a/file.h
+++ b/file.h
@@ -15,7 +15,7 @@
  */
 enum fio_filetype {
        FIO_TYPE_FILE = 1,              /* plain file */
-       FIO_TYPE_BD,                    /* block device */
+       FIO_TYPE_BLOCK,                 /* block device */
        FIO_TYPE_CHAR,                  /* character device */
        FIO_TYPE_PIPE,                  /* pipe */
 };
index ef94bd2..eb28826 100644 (file)
@@ -370,7 +370,7 @@ static int get_file_size(struct thread_data *td, struct fio_file *f)
 
        if (f->filetype == FIO_TYPE_FILE)
                ret = file_size(td, f);
-       else if (f->filetype == FIO_TYPE_BD)
+       else if (f->filetype == FIO_TYPE_BLOCK)
                ret = bdev_size(td, f);
        else if (f->filetype == FIO_TYPE_CHAR)
                ret = char_size(td, f);
@@ -420,7 +420,7 @@ static int __file_invalidate_cache(struct thread_data *td, struct fio_file *f,
                ret = posix_fadvise(f->fd, off, len, POSIX_FADV_DONTNEED);
                if (ret)
                        errval = ret;
-       } else if (f->filetype == FIO_TYPE_BD) {
+       } else if (f->filetype == FIO_TYPE_BLOCK) {
                int retry_count = 0;
 
                ret = blockdev_invalidate_cache(f);
@@ -709,7 +709,7 @@ static unsigned long long get_fs_free_counts(struct thread_data *td)
                struct stat sb;
                char buf[256];
 
-               if (f->filetype == FIO_TYPE_BD || f->filetype == FIO_TYPE_CHAR) {
+               if (f->filetype == FIO_TYPE_BLOCK || f->filetype == FIO_TYPE_CHAR) {
                        if (f->real_file_size != -1ULL)
                                ret += f->real_file_size;
                        continue;
@@ -1228,12 +1228,12 @@ static void get_file_type(struct fio_file *f)
        /* \\.\ is the device namespace in Windows, where every file is
         * a block device */
        if (strncmp(f->file_name, "\\\\.\\", 4) == 0)
-               f->filetype = FIO_TYPE_BD;
+               f->filetype = FIO_TYPE_BLOCK;
 #endif
 
        if (!stat(f->file_name, &sb)) {
                if (S_ISBLK(sb.st_mode))
-                       f->filetype = FIO_TYPE_BD;
+                       f->filetype = FIO_TYPE_BLOCK;
                else if (S_ISCHR(sb.st_mode))
                        f->filetype = FIO_TYPE_CHAR;
                else if (S_ISFIFO(sb.st_mode))
diff --git a/fio.h b/fio.h
index 62ff7ab..b2dade9 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -518,7 +518,6 @@ extern int fio_show_option_help(const char *);
 extern void fio_options_set_ioengine_opts(struct option *long_options, struct thread_data *td);
 extern void fio_options_dup_and_init(struct option *);
 extern void fio_options_mem_dupe(struct thread_data *);
-extern void options_mem_dupe(void *data, struct fio_option *options);
 extern void td_fill_rand_seeds(struct thread_data *);
 extern void td_fill_verify_state_seed(struct thread_data *);
 extern void add_job_opts(const char **, int);
diff --git a/init.c b/init.c
index ae20d61..c3cc3e5 100644 (file)
--- a/init.c
+++ b/init.c
@@ -1020,7 +1020,7 @@ int ioengine_load(struct thread_data *td)
                 */
                if (origeo) {
                        memcpy(td->eo, origeo, td->io_ops->option_struct_size);
-                       options_mem_dupe(td->eo, td->io_ops->options);
+                       options_mem_dupe(td->io_ops->options, td->eo);
                } else {
                        memset(td->eo, 0, td->io_ops->option_struct_size);
                        fill_default_options(td->eo, td->io_ops->options);
@@ -2717,9 +2717,6 @@ int parse_cmd_line(int argc, char *argv[], int client_type)
        }
 
 out_free:
-       if (pid_file)
-               free(pid_file);
-
        return ini_idx;
 }
 
@@ -2788,7 +2785,7 @@ int parse_options(int argc, char *argv[])
                if (did_arg)
                        return 0;
 
-               log_err("No jobs(s) defined\n\n");
+               log_err("No job(s) defined\n\n");
 
                if (!did_arg) {
                        usage(argv[0]);
index a1f8756..95013d1 100644 (file)
@@ -449,7 +449,7 @@ int td_io_open_file(struct thread_data *td, struct fio_file *f)
                goto err;
 
        if (td->o.fadvise_hint != F_ADV_NONE &&
-           (f->filetype == FIO_TYPE_BD || f->filetype == FIO_TYPE_FILE)) {
+           (f->filetype == FIO_TYPE_BLOCK || f->filetype == FIO_TYPE_FILE)) {
                int flags;
 
                if (td->o.fadvise_hint == F_ADV_TYPE) {
@@ -474,7 +474,7 @@ int td_io_open_file(struct thread_data *td, struct fio_file *f)
        }
 #ifdef FIO_HAVE_STREAMID
        if (td->o.fadvise_stream &&
-           (f->filetype == FIO_TYPE_BD || f->filetype == FIO_TYPE_FILE)) {
+           (f->filetype == FIO_TYPE_BLOCK || f->filetype == FIO_TYPE_FILE)) {
                off_t stream = td->o.fadvise_stream;
 
                if (posix_fadvise(f->fd, stream, f->io_size, POSIX_FADV_STREAMID) < 0) {
@@ -618,15 +618,15 @@ int fio_show_ioengine_help(const char *engine)
 {
        struct flist_head *entry;
        struct thread_data td;
+       struct ioengine_ops *io_ops;
        char *sep;
        int ret = 1;
 
        if (!engine || !*engine) {
                log_info("Available IO engines:\n");
                flist_for_each(entry, &engine_list) {
-                       td.io_ops = flist_entry(entry, struct ioengine_ops,
-                                               list);
-                       log_info("\t%s\n", td.io_ops->name);
+                       io_ops = flist_entry(entry, struct ioengine_ops, list);
+                       log_info("\t%s\n", io_ops->name);
                }
                return 0;
        }
@@ -638,16 +638,16 @@ int fio_show_ioengine_help(const char *engine)
 
        memset(&td, 0, sizeof(td));
 
-       td.io_ops = load_ioengine(&td, engine);
-       if (!td.io_ops) {
+       io_ops = load_ioengine(&td, engine);
+       if (!io_ops) {
                log_info("IO engine %s not found\n", engine);
                return 1;
        }
 
-       if (td.io_ops->options)
-               ret = show_cmd_help(td.io_ops->options, sep);
+       if (io_ops->options)
+               ret = show_cmd_help(io_ops->options, sep);
        else
-               log_info("IO engine %s has no options\n", td.io_ops->name);
+               log_info("IO engine %s has no options\n", io_ops->name);
 
        free_ioengine(&td);
 
index 1ca16e8..713112f 100644 (file)
--- a/options.c
+++ b/options.c
@@ -4772,34 +4772,19 @@ int fio_show_option_help(const char *opt)
        return show_cmd_help(fio_options, opt);
 }
 
-void options_mem_dupe(void *data, struct fio_option *options)
-{
-       struct fio_option *o;
-       char **ptr;
-
-       for (o = &options[0]; o->name; o++) {
-               if (o->type != FIO_OPT_STR_STORE)
-                       continue;
-
-               ptr = td_var(data, o, o->off1);
-               if (*ptr)
-                       *ptr = strdup(*ptr);
-       }
-}
-
 /*
  * dupe FIO_OPT_STR_STORE options
  */
 void fio_options_mem_dupe(struct thread_data *td)
 {
-       options_mem_dupe(&td->o, fio_options);
+       options_mem_dupe(fio_options, &td->o);
 
        if (td->eo && td->io_ops) {
                void *oldeo = td->eo;
 
                td->eo = malloc(td->io_ops->option_struct_size);
                memcpy(td->eo, oldeo, td->io_ops->option_struct_size);
-               options_mem_dupe(td->eo, td->io_ops->options);
+               options_mem_dupe(td->io_ops->options, td->eo);
        }
 }
 
diff --git a/parse.c b/parse.c
index 518c2df..fc508b6 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -1319,6 +1319,23 @@ void options_init(struct fio_option *options)
        }
 }
 
+void options_mem_dupe(struct fio_option *options, void *data)
+{
+       struct fio_option *o;
+       char **ptr;
+
+       dprint(FD_PARSE, "dup options\n");
+
+       for (o = &options[0]; o->name; o++) {
+               if (o->type != FIO_OPT_STR_STORE)
+                       continue;
+
+               ptr = td_var(data, o, o->off1);
+               if (*ptr)
+                       *ptr = strdup(*ptr);
+       }
+}
+
 void options_free(struct fio_option *options, void *data)
 {
        struct fio_option *o;
diff --git a/parse.h b/parse.h
index 7ba4e37..fb6abd1 100644 (file)
--- a/parse.h
+++ b/parse.h
@@ -86,6 +86,7 @@ extern int parse_cmd_option(const char *t, const char *l, struct fio_option *, v
 extern int show_cmd_help(struct fio_option *, const char *);
 extern void fill_default_options(void *, struct fio_option *);
 extern void options_init(struct fio_option *);
+extern void options_mem_dupe(struct fio_option *, void *);
 extern void options_free(struct fio_option *, void *);
 
 extern void strip_blank_front(char **);
@@ -106,8 +107,7 @@ typedef int (fio_opt_str_val_fn)(void *, long long *);
 typedef int (fio_opt_int_fn)(void *, int *);
 
 struct thread_options;
-static inline void *td_var(struct thread_options *to, struct fio_option *o,
-                          unsigned int offset)
+static inline void *td_var(void *to, struct fio_option *o, unsigned int offset)
 {
        void *ret;