path: root/zbd.c
diff options
authorDmitry Fomichev <>2021-01-27 13:19:16 +0900
committerJens Axboe <>2021-01-29 08:14:00 -0700
commit8e4b2e55512f1b75e99a9c4fe1fd7af5e05ecc4d (patch)
tree2cfb744df48dedfb0bddb3d189b8a32a1f0ece71 /zbd.c
parent6c3f1cc187103675f65eecd2eba1535df5cd59ec (diff)
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 <> Reviewed-by: Shin'ichiro Kawasaki <> Signed-off-by: Jens Axboe <>
Diffstat (limited to 'zbd.c')
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)
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;