summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Eno <jeno@micron.com>2015-01-29 12:27:58 -0800
committerMohamad Ayyash <mkayyash@google.com>2015-03-06 17:58:17 -0800
commit1b35740d5492c4a0a163ec49996265a8cd5e0100 (patch)
tree7cfe1bcc96d244abbdeb0fb21e69e5acaebcd350
parentaedc0b68ab3b59fe54361e3f640a7b31d97ea5fb (diff)
downloadfio-1b35740d5492c4a0a163ec49996265a8cd5e0100.tar.gz
Allow random overwrite workloads to write io_limit
Limiting the write phase of (random) overwrite workloads to 'size' before the verify phase doesn't make sense, so allow them to write up to io_limit. This better matches verify_only behavior, and allows the [verify-job] below to succeed: [global] thread=1 direct=1 ioengine=sync verify=meta bs=1k offset=0 size=5M io_limit=6M norandommap=1 verify_fatal=1 randseed=42 [write-job] filename=datafile.tmp rw=randwrite do_verify=0 [verify-job] stonewall create_serialize=0 filename=datafile.tmp rw=randwrite do_verify=1 verify_only=1 Signed-off-by: Justin Eno <jeno@micron.com> Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r--backend.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/backend.c b/backend.c
index 0f6e4259..3430e661 100644
--- a/backend.c
+++ b/backend.c
@@ -726,12 +726,18 @@ static uint64_t do_io(struct thread_data *td)
lat_target_init(td);
+ total_bytes = td->o.size;
+ /*
+ * Allow random overwrite workloads to write up to io_limit
+ * before starting verification phase as 'size' doesn't apply.
+ */
+ if (td_write(td) && td_random(td) && td->o.norandommap)
+ total_bytes = max(total_bytes, (uint64_t) td->o.io_limit);
/*
* If verify_backlog is enabled, we'll run the verify in this
* handler as well. For that case, we may need up to twice the
* amount of bytes.
*/
- total_bytes = td->o.size;
if (td->o.verify != VERIFY_NONE &&
(td_write(td) && td->o.verify_backlog))
total_bytes += td->o.size;