Merge branch 'master' into gfio
authorJens Axboe <axboe@kernel.dk>
Wed, 10 Apr 2013 17:50:32 +0000 (19:50 +0200)
committerJens Axboe <axboe@kernel.dk>
Wed, 10 Apr 2013 17:50:32 +0000 (19:50 +0200)
Conflicts:
engines/libaio.c
engines/net.c
iolog.h
options.c
options.h
parse.c
parse.h
thread_options.h

Signed-off-by: Jens Axboe <axboe@kernel.dk>
HOWTO
engines/e4defrag.c
engines/libaio.c
engines/net.c
fio.1
iolog.h
options.c
options.h
parse.c
thread_options.h

diff --git a/HOWTO b/HOWTO
index 7dc7d48..c7d0c9e 100644 (file)
--- a/HOWTO
+++ b/HOWTO
@@ -1241,6 +1241,7 @@ log_avg_msec=int By default, fio will log an entry in the iops, latency,
 lockmem=int    Pin down the specified amount of memory with mlock(2). Can
                potentially be used instead of removing memory or booting
                with less memory to simulate a smaller amount of memory.
+               The amount specified is per worker.
 
 exec_prerun=str        Before running this job, issue the command specified
                through system(3).
index 6063e6c..d9ddf75 100644 (file)
@@ -47,6 +47,8 @@ static struct fio_option options[] = {
                .type   = FIO_OPT_STR_STORE,
                .off1   = offsetof(struct e4defrag_options, donor_name),
                .help   = "File used as a block donor",
+               .category = FIO_OPT_C_ENGINE,
+               .group  = FIO_OPT_G_E4DEFRAG,
        },
        {
                .name   = "inplace",
@@ -55,6 +57,8 @@ static struct fio_option options[] = {
                .minval = 0,
                .maxval = 1,
                .help   = "Alloc and free space inside defrag event",
+               .category = FIO_OPT_C_ENGINE,
+               .group  = FIO_OPT_G_E4DEFRAG,
        },
        {
                .name   = NULL,
index d668325..be54dca 100644 (file)
@@ -33,7 +33,8 @@ static struct fio_option options[] = {
                .type   = FIO_OPT_STR_SET,
                .off1   = offsetof(struct libaio_options, userspace_reap),
                .help   = "Use alternative user-space reap implementation",
-               .category = FIO_OPT_C_IO,
+               .category = FIO_OPT_C_ENGINE,
+               .category = FIO_OPT_G_LIBAIO,
        },
        {
                .name   = NULL,
index 566ad2d..eb6763e 100644 (file)
@@ -62,7 +62,8 @@ static struct fio_option options[] = {
                .type   = FIO_OPT_STR_STORE,
                .cb     = str_hostname_cb,
                .help   = "Hostname for net IO engine",
-               .category = FIO_OPT_C_IO,
+               .category = FIO_OPT_C_ENGINE,
+               .group  = FIO_OPT_G_NETIO,
        },
        {
                .name   = "port",
@@ -72,7 +73,8 @@ static struct fio_option options[] = {
                .minval = 1,
                .maxval = 65535,
                .help   = "Port to use for TCP or UDP net connections",
-               .category = FIO_OPT_C_IO,
+               .category = FIO_OPT_C_ENGINE,
+               .group  = FIO_OPT_G_NETIO,
        },
        {
                .name   = "protocol",
@@ -97,6 +99,8 @@ static struct fio_option options[] = {
                            .help = "UNIX domain socket",
                          },
                },
+               .category = FIO_OPT_C_ENGINE,
+               .group  = FIO_OPT_G_NETIO,
        },
 #ifdef CONFIG_TCP_NODELAY
        {
@@ -104,6 +108,8 @@ static struct fio_option options[] = {
                .type   = FIO_OPT_BOOL,
                .off1   = offsetof(struct netio_options, nodelay),
                .help   = "Use TCP_NODELAY on TCP connections",
+               .category = FIO_OPT_C_ENGINE,
+               .group  = FIO_OPT_G_NETIO,
        },
 #endif
        {
@@ -112,13 +118,16 @@ static struct fio_option options[] = {
                .type   = FIO_OPT_STR_SET,
                .off1   = offsetof(struct netio_options, listen),
                .help   = "Listen for incoming TCP connections",
-               .category = FIO_OPT_C_IO,
+               .category = FIO_OPT_C_ENGINE,
+               .group  = FIO_OPT_G_NETIO,
        },
        {
                .name   = "pingpong",
                .type   = FIO_OPT_STR_SET,
                .off1   = offsetof(struct netio_options, pingpong),
                .help   = "Ping-pong IO requests",
+               .category = FIO_OPT_C_ENGINE,
+               .group  = FIO_OPT_G_NETIO,
        },
        {
                .name   = NULL,
diff --git a/fio.1 b/fio.1
index dc13b98..eddc265 100644 (file)
--- a/fio.1
+++ b/fio.1
@@ -1034,7 +1034,7 @@ Disable measurements of throughput/bandwidth numbers. See \fBdisable_lat\fR.
 .TP
 .BI lockmem \fR=\fPint
 Pin the specified amount of memory with \fBmlock\fR\|(2).  Can be used to
-simulate a smaller amount of memory.
+simulate a smaller amount of memory. The amount specified is per worker.
 .TP
 .BI exec_prerun \fR=\fPstr
 Before running the job, execute the specified command with \fBsystem\fR\|(3).
diff --git a/iolog.h b/iolog.h
index af84e10..7099097 100644 (file)
--- a/iolog.h
+++ b/iolog.h
@@ -97,6 +97,7 @@ enum file_log_act {
        FIO_LOG_UNLINK_FILE,
 };
 
+struct io_u;
 extern int __must_check read_iolog_get(struct thread_data *, struct io_u *);
 extern void log_io_u(struct thread_data *, struct io_u *);
 extern void log_file(struct thread_data *, struct fio_file *, enum file_log_act);
index 83e7454..f5cab65 100644 (file)
--- a/options.c
+++ b/options.c
@@ -2340,7 +2340,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .lname  = "Lock memory",
                .type   = FIO_OPT_STR_VAL,
                .off1   = td_var_offset(lockmem),
-               .help   = "Lock down this amount of memory",
+               .help   = "Lock down this amount of memory (per worker)",
                .def    = "0",
                .interval = 1024 * 1024,
                .category = FIO_OPT_C_GENERAL,
index 330cc87..9702d47 100644 (file)
--- a/options.h
+++ b/options.h
@@ -54,6 +54,7 @@ enum opt_category {
        __FIO_OPT_C_STAT,
        __FIO_OPT_C_LOG,
        __FIO_OPT_C_PROFILE,
+       __FIO_OPT_C_ENGINE,
        __FIO_OPT_C_NR,
 
        FIO_OPT_C_GENERAL       = (1U << __FIO_OPT_C_GENERAL),
@@ -62,6 +63,7 @@ enum opt_category {
        FIO_OPT_C_STAT          = (1U << __FIO_OPT_C_STAT),
        FIO_OPT_C_LOG           = (1U << __FIO_OPT_C_LOG),
        FIO_OPT_C_PROFILE       = (1U << __FIO_OPT_C_PROFILE),
+       FIO_OPT_C_ENGINE        = (1U << __FIO_OPT_C_ENGINE),
        FIO_OPT_C_INVALID       = (1U << __FIO_OPT_C_NR),
 };
 
@@ -88,6 +90,9 @@ enum opt_category_group {
        __FIO_OPT_G_IO_BUF,
        __FIO_OPT_G_TIOBENCH,
        __FIO_OPT_G_ERR,
+       __FIO_OPT_G_E4DEFRAG,
+       __FIO_OPT_G_NETIO,
+       __FIO_OPT_G_LIBAIO,
        __FIO_OPT_G_NR,
 
        FIO_OPT_G_RATE          = (1U << __FIO_OPT_G_RATE),
@@ -112,6 +117,9 @@ enum opt_category_group {
        FIO_OPT_G_IO_BUF        = (1U << __FIO_OPT_G_IO_BUF),
        FIO_OPT_G_TIOBENCH      = (1U << __FIO_OPT_G_TIOBENCH),
        FIO_OPT_G_ERR           = (1U << __FIO_OPT_G_ERR),
+       FIO_OPT_G_E4DEFRAG      = (1U << __FIO_OPT_G_E4DEFRAG),
+       FIO_OPT_G_NETIO         = (1U << __FIO_OPT_G_NETIO),
+       FIO_OPT_G_LIBAIO        = (1U << __FIO_OPT_G_LIBAIO),
        FIO_OPT_G_INVALID       = (1U << __FIO_OPT_G_NR),
 };
 
diff --git a/parse.c b/parse.c
index 606c54b..e8b628c 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -49,7 +49,7 @@ static void posval_sort(struct fio_option *o, struct value_pair *vpmap)
 static void show_option_range(struct fio_option *o,
                                int (*logger)(const char *format, ...))
 {
-       if (o->type == FIO_OPT_FLOAT_LIST){
+       if (o->type == FIO_OPT_FLOAT_LIST) {
                if (o->minfp == DBL_MIN && o->maxfp == DBL_MAX)
                        return;
 
@@ -57,7 +57,7 @@ static void show_option_range(struct fio_option *o,
                if (o->maxfp != DBL_MAX)
                        logger(", max=%f", o->maxfp);
                logger("\n");
-       } else {
+       } else if (!o->posval[0].ival) {
                if (!o->minval && !o->maxval)
                        return;
 
@@ -1169,7 +1169,7 @@ void option_init(struct fio_option *o)
        if (!o->cb && (!o->off1 && !o->roff1))
                log_err("Option %s: neither cb nor offset given\n", o->name);
        if (!o->category) {
-               log_info("Options %s: no category defined. Setting to misc\n", o->name);
+               log_info("Option %s: no category defined. Setting to misc\n", o->name);
                o->category = FIO_OPT_C_GENERAL;
                o->group = FIO_OPT_G_INVALID;
        }
index a794949..68056df 100644 (file)
@@ -123,6 +123,7 @@ struct thread_options {
        unsigned int fsync_on_close;
 
        unsigned int random_distribution;
+
        fio_fp64_t zipf_theta;
        fio_fp64_t pareto_h;
 
@@ -150,7 +151,7 @@ struct thread_options {
        enum fio_memtype mem_type;
        unsigned int mem_align;
 
-       unsigned max_latency;
+       unsigned int max_latency;
 
        unsigned int stonewall;
        unsigned int new_group;