From 9a50c5c5650fdd9f3117e3745f16cc63c5b267b7 Mon Sep 17 00:00:00 2001 From: Puthikorn Voravootivat Date: Wed, 5 Feb 2014 10:28:15 -0800 Subject: [PATCH] Fix verify_backlog start verification before finish writing Due to recent fix for checking rand_seed in verify phase. In write phase, the IO transaction will be logged before completing the actual data write. If verify_backlog is enabled, verification may start before all data has been written. This patch disable that fix if the verify_backlog is enabled. Signed-off-by: Puthikorn Voravootivat Signed-off-by: Jens Axboe --- backend.c | 7 ++++++- io_u.c | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/backend.c b/backend.c index 3ac72e77..84509575 100644 --- a/backend.c +++ b/backend.c @@ -718,10 +718,15 @@ static uint64_t do_io(struct thread_data *td) else td_set_runstate(td, TD_RUNNING); + /* + * Verify_backlog disabled: We need to log rand seed before the + * actual IO to be able to replay it correctly in the verify phase. + */ if (td_write(td) && io_u->ddir == DDIR_WRITE && td->o.do_verify && td->o.verify != VERIFY_NONE && - !td->o.experimental_verify) + !td->o.experimental_verify && + !(td->flags & TD_F_VER_BACKLOG)) log_io_piece(td, io_u); ret = td_io_queue(td, io_u); diff --git a/io_u.c b/io_u.c index f68b2139..4264cd54 100644 --- a/io_u.c +++ b/io_u.c @@ -1623,6 +1623,17 @@ static void io_completed(struct thread_data *td, struct io_u *io_u, utime_since_now(&td->start)); } + /* + * Verify_backlog enable: We need to log the write job after + * finishing it to prevent verifying before finish writing. + */ + if (td_write(td) && idx == DDIR_WRITE && + td->o.do_verify && + td->o.verify != VERIFY_NONE && + !td->o.experimental_verify && + (td->flags & TD_F_VER_BACKLOG)) + log_io_piece(td, io_u); + icd->bytes_done[idx] += bytes; if (io_u->end_io) { -- 2.25.1