summaryrefslogtreecommitdiffstats
path: root/drivers/watchdog
diff options
context:
space:
mode:
authorIlya Dryomov <idryomov@gmail.com>2019-05-30 16:07:48 +0200
committerIlya Dryomov <idryomov@gmail.com>2019-07-08 14:01:45 +0200
commite1fddc8fdd22ed5a55fc7e7a81437c4663c7ba8c (patch)
tree8b89d209d035aa2538c4bf32facf32f4e0486e92 /drivers/watchdog
parenta2b1da09793d003410b57f96eaf7e83e43b7a50a (diff)
downloadlinux-e1fddc8fdd22ed5a55fc7e7a81437c4663c7ba8c.tar.bz2
rbd: quiescing lock should wait for image requests
Syncing OSD requests doesn't really work. A single image request may be comprised of multiple object requests, each of which can go through a series of OSD requests (original, copyups, etc). On top of that, the OSD cliest may be shared with other rbd devices. What we want is to ensure that all in-flight image requests complete. Introduce rbd_dev->running_list and block in RBD_LOCK_STATE_RELEASING until that happens. New OSD requests may be started during this time. Note that __rbd_img_handle_request() acquires rbd_dev->lock_rwsem only if need_exclusive_lock() returns true. This avoids a deadlock similar to the one outlined in the previous commit between unlock and I/O that doesn't require lock, such as a read with object-map feature disabled. Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Dongsheng Yang <dongsheng.yang@easystack.cn>
Diffstat (limited to 'drivers/watchdog')
0 files changed, 0 insertions, 0 deletions