From 1e564979edb07cf889ab160765e36a031990c2ad Mon Sep 17 00:00:00 2001 From: Justin Eno Date: Thu, 29 Jan 2015 12:27:58 -0800 Subject: [PATCH] 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 Signed-off-by: Jens Axboe --- backend.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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; -- 2.25.1