blktrace: add 'reply_skip' option
[fio.git] / options.c
index fb28511953c79e7351eb7040c0414514f1bc7055..047e493daec44dcaa787043959fcb86d81130b08 100644 (file)
--- a/options.c
+++ b/options.c
@@ -342,6 +342,43 @@ static int ignore_error_type(struct thread_data *td, enum error_type_bit etype,
 
 }
 
+static int str_replay_skip_cb(void *data, const char *input)
+{
+       struct thread_data *td = cb_data_to_td(data);
+       char *str, *p, *n;
+       int ret = 0;
+
+       if (parse_dryrun())
+               return 0;
+
+       p = str = strdup(input);
+
+       strip_blank_front(&str);
+       strip_blank_end(str);
+
+       while (p) {
+               n = strchr(p, ',');
+               if (n)
+                       *n++ = '\0';
+               if (!strcmp(p, "read"))
+                       td->o.replay_skip |= 1u << DDIR_READ;
+               else if (!strcmp(p, "write"))
+                       td->o.replay_skip |= 1u << DDIR_WRITE;
+               else if (!strcmp(p, "trim"))
+                       td->o.replay_skip |= 1u << DDIR_TRIM;
+               else if (!strcmp(p, "sync"))
+                       td->o.replay_skip |= 1u << DDIR_SYNC;
+               else {
+                       log_err("Unknown skip type: %s\n", p);
+                       ret = 1;
+                       break;
+               }
+               p = n;
+       }
+       free(str);
+       return ret;
+}
+
 static int str_ignore_error_cb(void *data, const char *input)
 {
        struct thread_data *td = cb_data_to_td(data);
@@ -2846,25 +2883,14 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
        {
                .name   = "verifysort",
                .lname  = "Verify sort",
-               .type   = FIO_OPT_BOOL,
-               .off1   = offsetof(struct thread_options, verifysort),
-               .help   = "Sort written verify blocks for read back",
-               .def    = "1",
-               .parent = "verify",
-               .hide   = 1,
+               .type   = FIO_OPT_SOFT_DEPRECATED,
                .category = FIO_OPT_C_IO,
                .group  = FIO_OPT_G_VERIFY,
        },
        {
                .name   = "verifysort_nr",
                .lname  = "Verify Sort Nr",
-               .type   = FIO_OPT_INT,
-               .off1   = offsetof(struct thread_options, verifysort_nr),
-               .help   = "Pre-load and sort verify blocks for a read workload",
-               .minval = 0,
-               .maxval = 131072,
-               .def    = "1024",
-               .parent = "verify",
+               .type   = FIO_OPT_SOFT_DEPRECATED,
                .category = FIO_OPT_C_IO,
                .group  = FIO_OPT_G_VERIFY,
        },
@@ -3169,6 +3195,17 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .category = FIO_OPT_C_IO,
                .group  = FIO_OPT_G_IOLOG,
        },
+       {
+               .name   = "replay_skip",
+               .lname  = "Replay Skip",
+               .type   = FIO_OPT_STR,
+               .cb     = str_replay_skip_cb,
+               .off1   = offsetof(struct thread_options, replay_skip),
+               .parent = "read_iolog",
+               .help   = "Skip certain IO types (read,write,trim,flush)",
+               .category = FIO_OPT_C_IO,
+               .group  = FIO_OPT_G_IOLOG,
+       },
        {
                .name   = "exec_prerun",
                .lname  = "Pre-execute runnable",
@@ -4436,15 +4473,15 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .prio   = 1,
                .posval = {
                          { .ival = "0",
-                           .oval = 0,
+                           .oval = N2S_NONE,
                            .help = "Auto-detect",
                          },
                          { .ival = "8",
-                           .oval = 8,
+                           .oval = N2S_BYTEPERSEC,
                            .help = "Normal (byte based)",
                          },
                          { .ival = "1",
-                           .oval = 1,
+                           .oval = N2S_BITPERSEC,
                            .help = "Bit based",
                          },
                },