Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
rbd: always kick acquire on "acquired" and "released" notifications
Skipping the "lock has been released" notification if the lock owner is not what we expect based on owner_cid can lead to I/O hangs. One example is our own notifications: because owner_cid is cleared in rbd_unlock(), when we get our own notification it is processed as unexpected/duplicate and maybe_kick_acquire() isn't called. If a peer that requested the lock then doesn't go through with acquiring it, I/O requests that came in while the lock was being quiesced would be stalled until another I/O request is submitted and kicks acquire from rbd_img_exclusive_lock(). This makes the comment in rbd_release_lock() actually true: prior to this change the canceled work was being requeued in response to the "lock has been acquired" notification from rbd_handle_acquired_lock(). Cc: [email protected] # 5.3+ Signed-off-by: Ilya Dryomov <[email protected]> Tested-by: Robin Geuze <[email protected]>
- Loading branch information