diff options
author | Dmitry Fomichev <dmitry.fomichev@wdc.com> | 2021-01-27 13:19:16 +0900 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2021-01-29 08:14:00 -0700 |
commit | 8e4b2e55512f1b75e99a9c4fe1fd7af5e05ecc4d (patch) | |
tree | 2cfb744df48dedfb0bddb3d189b8a32a1f0ece71 /zbd.c | |
parent | 6c3f1cc187103675f65eecd2eba1535df5cd59ec (diff) | |
download | fio-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.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -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; } /* |