The following changes since commit 495288a1e627c3d1b29897786b786eb6008841a3: examples/ssd-test.fio: bump size to 10G (2015-02-16 15:04:11 -0700) are available in the git repository at: git://git.kernel.dk/fio.git master for you to fetch changes up to 83da8fbfa3cdcd16bef7276af6aec0eea4a4566b: Allow verify w/norandommap and bsrange (2015-02-18 10:38:37 -0800) ---------------------------------------------------------------- Justin Eno (2): Allow verification of random overwrites w/ba < bs Allow verify w/norandommap and bsrange HOWTO | 8 ++++---- init.c | 3 +-- iolog.c | 14 +++++++++++--- 3 files changed, 16 insertions(+), 9 deletions(-) --- Diff of recent changes: diff --git a/HOWTO b/HOWTO index 8da5527..0f7909d 100644 --- 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 - 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 diff --git a/init.c b/init.c index bb53a1e..c210ad2 100644 --- 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, " - "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)) diff --git a/iolog.c b/iolog.c index 99f8bc1..b867583 100644 --- a/iolog.c +++ b/iolog.c @@ -250,6 +250,7 @@ restart: p = &td->io_hist_tree.rb_node; parent = NULL; while (*p) { + int overlap = 0; parent = *p; __ipo = rb_entry(parent, struct io_piece, rb_node); @@ -257,11 +258,18 @@ restart: p = &(*p)->rb_left; else if (ipo->file > __ipo->file) p = &(*p)->rb_right; - else if (ipo->offset < __ipo->offset) + else if (ipo->offset < __ipo->offset) { p = &(*p)->rb_left; - else if (ipo->offset > __ipo->offset) + overlap = ipo->offset + ipo->len > __ipo->offset; + } + else if (ipo->offset > __ipo->offset) { p = &(*p)->rb_right; - else { + overlap = __ipo->offset + __ipo->len > ipo->offset; + } + else + overlap = 1; + + if (overlap) { dprint(FD_IO, "iolog: overlap %llu/%lu, %llu/%lu", __ipo->offset, __ipo->len, ipo->offset, ipo->len); -- To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html