Hello, This fixes a deadlock which can occur when a watch error is hit while the RBD driver is still recovering from a previous watch error. This lock cycle was discovered during some performance tests. Thanks, Ilya Ilya Dryomov (4): rbd: move rbd_dev_refresh() definition rbd: decouple header read-in from updating rbd_dev->header rbd: decouple parent info read-in from updating rbd_dev rbd: take header_rwsem in rbd_dev_refresh() only when updating drivers/block/rbd.c | 412 ++++++++++++++++++++++++-------------------- 1 file changed, 225 insertions(+), 187 deletions(-) -- 2.41.0