Allow verify w/norandommap and bsrange
authorJustin Eno <jeno@micron.com>
Thu, 29 Jan 2015 22:28:38 +0000 (14:28 -0800)
committerJens Axboe <axboe@fb.com>
Wed, 18 Feb 2015 18:38:37 +0000 (10:38 -0800)
Only intact blocks are verified; partially-overwritten blocks
are ignored
Signed-off-by: Justin Eno <jeno@micron.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
HOWTO
init.c

diff --git a/HOWTO b/HOWTO
index 8da5527a3edb6cbfd408f497260651d99c633be0..0f7909daef68c32e0e4cee1546d4b93a479a3e0a 100644 (file)
--- a/HOWTO
+++ b/HOWTO
@@ -919,10 +919,10 @@ norandommap       Normally fio will cover every block of the file when doing
                random IO. If this option is given, fio will just get a
                new random offset without looking at past io history. This
                means that some blocks may not be read or written, and that
                random IO. If this option is given, fio will just get a
                new random offset without looking at past io history. This
                means that some blocks may not be read or written, and that
-               some blocks may be read/written more than once. This option
-               is mutually exclusive with verify= if and only if multiple
-               blocksizes (via bsrange=) are used, since fio only tracks
-               complete rewrites of blocks.
+               some blocks may be read/written more than once. If this option
+               is used with verify= and multiple blocksizes (via bsrange=),
+               only intact blocks are verified, i.e., partially-overwritten
+               blocks are ignored.
 
 softrandommap=bool See norandommap. If fio runs with the random block map
                enabled and it fails to allocate the map, if this option is
 
 softrandommap=bool See norandommap. If fio runs with the random block map
                enabled and it fails to allocate the map, if this option is
diff --git a/init.c b/init.c
index bb53a1e2bc097a256172db7e46075bd5658704da..c210ad257ce3125a1ecb62152fe26648a5d320bc 100644 (file)
--- a/init.c
+++ b/init.c
@@ -596,8 +596,7 @@ static int fixup_options(struct thread_data *td)
        if (o->norandommap && o->verify != VERIFY_NONE
            && !fixed_block_size(o))  {
                log_err("fio: norandommap given for variable block sizes, "
        if (o->norandommap && o->verify != VERIFY_NONE
            && !fixed_block_size(o))  {
                log_err("fio: norandommap given for variable block sizes, "
-                       "verify disabled\n");
-               o->verify = VERIFY_NONE;
+                       "verify limited\n");
                ret = warnings_fatal;
        }
        if (o->bs_unaligned && (o->odirect || td->io_ops->flags & FIO_RAWIO))
                ret = warnings_fatal;
        }
        if (o->bs_unaligned && (o->odirect || td->io_ops->flags & FIO_RAWIO))