summaryrefslogtreecommitdiff
path: root/zbd.c
diff options
context:
space:
mode:
authorDmitry Fomichev <dmitry.fomichev@wdc.com>2021-01-27 13:19:16 +0900
committerJens Axboe <axboe@kernel.dk>2021-01-29 08:14:00 -0700
commit8e4b2e55512f1b75e99a9c4fe1fd7af5e05ecc4d (patch)
tree2cfb744df48dedfb0bddb3d189b8a32a1f0ece71 /zbd.c
parent6c3f1cc187103675f65eecd2eba1535df5cd59ec (diff)
downloadfio-8e4b2e55512f1b75e99a9c4fe1fd7af5e05ecc4d.tar.gz
fio-8e4b2e55512f1b75e99a9c4fe1fd7af5e05ecc4d.tar.bz2
zbd: don't unlock zone mutex after verify replay
zbd_adjust_block() always returns with the zone locked if the i/o is accepted. The corresponding unlock happens in zbd_put_io(). The function description says - * Locking strategy: returns with z->mutex locked if and only if z refers * to a sequential zone and if io_u_accept is returned. z is the zone that * corresponds to io_u->offset at the end of this function. Remove the recently added unlock after zbd_replay_write_order() call. Add a Coverity annotation to mark the absence of unlock as intentional. Fixes: b2726d53bb5d ("zbd: Add a missing pthread_mutex_unlock() call") Signed-off-by: Dmitry Fomichev <dmitry.fomichev@wdc.com> Reviewed-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'zbd.c')
-rw-r--r--zbd.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/zbd.c b/zbd.c
index a3c1ff9a..1ac1357b 100644
--- a/zbd.c
+++ b/zbd.c
@@ -1561,7 +1561,12 @@ enum io_u_action zbd_adjust_block(struct thread_data *td, struct io_u *io_u)
case DDIR_READ:
if (td->runstate == TD_VERIFYING && td_write(td)) {
zb = zbd_replay_write_order(td, io_u, zb);
- zone_unlock(zb);
+ /*
+ * Since we return with the zone lock still held,
+ * add an annotation to let Coverity know that it
+ * is intentional.
+ */
+ /* coverity[missing_unlock] */
goto accept;
}
/*