Skip to content

Commit 3ceccb1

Browse files
committed
rbd: don't assume rbd_is_lock_owner() for exclusive mappings
Expanding on the previous commit, assuming that rbd_is_lock_owner() always returns true (i.e. that we are either in RBD_LOCK_STATE_LOCKED or RBD_LOCK_STATE_QUIESCING) if the mapping is exclusive is wrong too. In case ceph_cls_set_cookie() fails, the lock would be temporarily released even if the mapping is exclusive, meaning that we can end up even in RBD_LOCK_STATE_UNLOCKED. IOW, exclusive mappings are really "just" about disabling automatic lock transitions (as documented in the man page), not about grabbing the lock and holding on to it whatever it takes. Cc: [email protected] Fixes: 637cd06 ("rbd: new exclusive lock wait/wake code") Signed-off-by: Ilya Dryomov <[email protected]> Reviewed-by: Dongsheng Yang <[email protected]>
1 parent 2237ceb commit 3ceccb1

File tree

1 file changed

+0
-5
lines changed

1 file changed

+0
-5
lines changed

drivers/block/rbd.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6589,11 +6589,6 @@ static int rbd_add_acquire_lock(struct rbd_device *rbd_dev)
65896589
if (ret)
65906590
return ret;
65916591

6592-
/*
6593-
* The lock may have been released by now, unless automatic lock
6594-
* transitions are disabled.
6595-
*/
6596-
rbd_assert(!rbd_dev->opts->exclusive || rbd_is_lock_owner(rbd_dev));
65976592
return 0;
65986593
}
65996594

0 commit comments

Comments
 (0)