Fix bsrange read,write value option pairs
authorDave Engberg <dengberg@evernote.com>
Sat, 23 Jul 2011 19:07:13 +0000 (21:07 +0200)
committerJens Axboe <jaxboe@fusionio.com>
Sat, 23 Jul 2011 19:07:13 +0000 (21:07 +0200)
The 'bs' and 'bssplit' configuration variables accept separate numbers
for read and write operations if you separate them with a comma. For
example: bssplit=1k/39:8k/50:64k/11,1k/29:8k/50:64k/21

The documentation for 'bsrange' says it works the same way, but if I try
to specify two ranges with a comma, I get an error when I run the app.
E.g. if I put this line in the configuration file: bsrange=1k-16k,2k-32k

I get this error output:

fio: pid=26861, err=22/file:engines/sync.c:62, func=xfer, error=Invalid argument

This patch fixes it.

Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
parse.c

diff --git a/parse.c b/parse.c
index ad2782f..3e15b54 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -453,6 +453,11 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data,
 
                strncpy(tmp, ptr, sizeof(tmp) - 1);
 
+               /* Handle bsrange with separate read,write values: */
+               p1 = strchr(tmp, ',');
+               if (p1)
+                       *p1 = '\0';
+
                p1 = strchr(tmp, '-');
                if (!p1) {
                        p1 = strchr(tmp, ':');