Recent changes (master)
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:
HOWTO +4 -4
@@ -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
init.c +1 -2
@@ -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 ))
iolog.c +11 -3
@@ -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);