From 8e4b2e55512f1b75e99a9c4fe1fd7af5e05ecc4d Mon Sep 17 00:00:00 2001 From: Dmitry Fomichev Date: Wed, 27 Jan 2021 13:19:16 +0900 Subject: [PATCH] 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 --- zbd.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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; } /* -- 2.25.1