init: escape description option string
[fio.git] / options.c
index f26ff77647329a645f0fa4ead9eb9a58adcceba7..d2493e4566d963c60598ba3865bd0d40dd68534b 100644 (file)
--- a/options.c
+++ b/options.c
@@ -1892,6 +1892,16 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .category = FIO_OPT_C_IO,
                .group  = FIO_OPT_G_IO_TYPE,
        },
                .category = FIO_OPT_C_IO,
                .group  = FIO_OPT_G_IO_TYPE,
        },
+       {
+               .name   = "atomic",
+               .lname  = "Atomic I/O",
+               .type   = FIO_OPT_BOOL,
+               .off1   = td_var_offset(oatomic),
+               .help   = "Use Atomic IO with O_DIRECT (implies O_DIRECT)",
+               .def    = "0",
+               .category = FIO_OPT_C_IO,
+               .group  = FIO_OPT_G_IO_TYPE,
+       },
        {
                .name   = "buffered",
                .lname  = "Buffered I/O",
        {
                .name   = "buffered",
                .lname  = "Buffered I/O",
@@ -3267,7 +3277,7 @@ static void add_to_lopt(struct option *lopt, struct fio_option *o,
        lopt->name = (char *) name;
        lopt->val = val;
        if (o->type == FIO_OPT_STR_SET)
        lopt->name = (char *) name;
        lopt->val = val;
        if (o->type == FIO_OPT_STR_SET)
-               lopt->has_arg = no_argument;
+               lopt->has_arg = optional_argument;
        else
                lopt->has_arg = required_argument;
 }
        else
                lopt->has_arg = required_argument;
 }
@@ -3540,7 +3550,8 @@ static char **dup_and_sub_options(char **opts, int num_opts)
        return opts_copy;
 }
 
        return opts_copy;
 }
 
-int fio_options_parse(struct thread_data *td, char **opts, int num_opts)
+int fio_options_parse(struct thread_data *td, char **opts, int num_opts,
+                       int dump_cmdline)
 {
        int i, ret, unknown;
        char **opts_copy;
 {
        int i, ret, unknown;
        char **opts_copy;
@@ -3551,7 +3562,7 @@ int fio_options_parse(struct thread_data *td, char **opts, int num_opts)
        for (ret = 0, i = 0, unknown = 0; i < num_opts; i++) {
                struct fio_option *o;
                int newret = parse_option(opts_copy[i], opts[i], fio_options,
        for (ret = 0, i = 0, unknown = 0; i < num_opts; i++) {
                struct fio_option *o;
                int newret = parse_option(opts_copy[i], opts[i], fio_options,
-                                               &o, td);
+                                               &o, td, dump_cmdline);
 
                if (opts_copy[i]) {
                        if (newret && !o) {
 
                if (opts_copy[i]) {
                        if (newret && !o) {
@@ -3580,7 +3591,7 @@ int fio_options_parse(struct thread_data *td, char **opts, int num_opts)
                        if (td->eo)
                                newret = parse_option(opts_copy[i], opts[i],
                                                      td->io_ops->options, &o,
                        if (td->eo)
                                newret = parse_option(opts_copy[i], opts[i],
                                                      td->io_ops->options, &o,
-                                                     td->eo);
+                                                     td->eo, dump_cmdline);
 
                        ret |= newret;
                        if (!o)
 
                        ret |= newret;
                        if (!o)