Merge git://git.kernel.dk/fio into steady-state
[fio.git] / options.c
index e0db19ba836286133d681b259b6c00afb4cd5aa1..4c4f52c001c03b89df76ee5547d391a316df2c1e 100644 (file)
--- a/options.c
+++ b/options.c
@@ -22,7 +22,7 @@ char client_sockaddr_str[INET6_ADDRSTRLEN] = { 0 };
 
 #define cb_data_to_td(data)    container_of(data, struct thread_data, o)
 
-struct pattern_fmt_desc fmt_desc[] = {
+static struct pattern_fmt_desc fmt_desc[] = {
        {
                .fmt   = "%o",
                .len   = FIELD_SIZE(struct io_u *, offset),
@@ -1383,6 +1383,50 @@ static int str_size_cb(void *data, unsigned long long *__val)
        return 0;
 }
 
+static int str_write_bw_log_cb(void *data, const char *str)
+{
+       struct thread_data *td = cb_data_to_td(data);
+
+       if (str)
+               td->o.bw_log_file = strdup(str);
+
+       td->o.write_bw_log = 1;
+       return 0;
+}
+
+static int str_write_lat_log_cb(void *data, const char *str)
+{
+       struct thread_data *td = cb_data_to_td(data);
+
+       if (str)
+               td->o.lat_log_file = strdup(str);
+
+       td->o.write_lat_log = 1;
+       return 0;
+}
+
+static int str_write_iops_log_cb(void *data, const char *str)
+{
+       struct thread_data *td = cb_data_to_td(data);
+
+       if (str)
+               td->o.iops_log_file = strdup(str);
+
+       td->o.write_iops_log = 1;
+       return 0;
+}
+
+static int str_write_hist_log_cb(void *data, const char *str)
+{
+       struct thread_data *td = cb_data_to_td(data);
+
+       if (str)
+               td->o.hist_log_file = strdup(str);
+
+       td->o.write_hist_log = 1;
+       return 0;
+}
+
 static int rw_verify(struct fio_option *o, void *data)
 {
        struct thread_data *td = cb_data_to_td(data);
@@ -2185,7 +2229,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                          },
                          { .ival = "gauss",
                            .oval = FIO_FSERVICE_GAUSS,
-                           .help = "Normal (guassian) distribution",
+                           .help = "Normal (gaussian) distribution",
                          },
                          { .ival = "roundrobin",
                            .oval = FIO_FSERVICE_RR,
@@ -3579,8 +3623,9 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
        {
                .name   = "write_bw_log",
                .lname  = "Write bandwidth log",
-               .type   = FIO_OPT_STR_STORE,
+               .type   = FIO_OPT_STR,
                .off1   = offsetof(struct thread_options, bw_log_file),
+               .cb     = str_write_bw_log_cb,
                .help   = "Write log of bandwidth during run",
                .category = FIO_OPT_C_LOG,
                .group  = FIO_OPT_G_INVALID,
@@ -3588,8 +3633,9 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
        {
                .name   = "write_lat_log",
                .lname  = "Write latency log",
-               .type   = FIO_OPT_STR_STORE,
+               .type   = FIO_OPT_STR,
                .off1   = offsetof(struct thread_options, lat_log_file),
+               .cb     = str_write_lat_log_cb,
                .help   = "Write log of latency during run",
                .category = FIO_OPT_C_LOG,
                .group  = FIO_OPT_G_INVALID,
@@ -3597,8 +3643,9 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
        {
                .name   = "write_iops_log",
                .lname  = "Write IOPS log",
-               .type   = FIO_OPT_STR_STORE,
+               .type   = FIO_OPT_STR,
                .off1   = offsetof(struct thread_options, iops_log_file),
+               .cb     = str_write_iops_log_cb,
                .help   = "Write log of IOPS during run",
                .category = FIO_OPT_C_LOG,
                .group  = FIO_OPT_G_INVALID,
@@ -3638,8 +3685,9 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
        {
                .name   = "write_hist_log",
                .lname  = "Write latency histogram logs",
-               .type   = FIO_OPT_STR_STORE,
+               .type   = FIO_OPT_STR,
                .off1   = offsetof(struct thread_options, hist_log_file),
+               .cb     = str_write_hist_log_cb,
                .help   = "Write log of latency histograms during run",
                .category = FIO_OPT_C_LOG,
                .group  = FIO_OPT_G_INVALID,
@@ -3719,6 +3767,15 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .help   = "Install libz-dev(el) to get compression support",
        },
 #endif
+       {
+               .name = "log_unix_epoch",
+               .lname = "Log epoch unix",
+               .type = FIO_OPT_BOOL,
+               .off1 = offsetof(struct thread_options, log_unix_epoch),
+               .help = "Use Unix time in log files",
+               .category = FIO_OPT_C_LOG,
+               .group = FIO_OPT_G_INVALID,
+       },
        {
                .name   = "block_error_percentiles",
                .lname  = "Block error percentiles",
@@ -3935,6 +3992,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
        },
        {
                .name   = "disable_bw_measurement",
+               .alias  = "disable_bw",
                .lname  = "Disable bandwidth stats",
                .type   = FIO_OPT_BOOL,
                .off1   = offsetof(struct thread_options, disable_bw),
@@ -4818,7 +4876,7 @@ void del_opt_posval(const char *optname, const char *ival)
 
 void fio_options_free(struct thread_data *td)
 {
-       options_free(fio_options, td);
+       options_free(fio_options, &td->o);
        if (td->eo && td->io_ops && td->io_ops->options) {
                options_free(td->io_ops->options, td->eo);
                free(td->eo);