diff options
author | Ilya Dryomov <idryomov@gmail.com> | 2019-05-30 16:07:48 +0200 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2019-07-08 14:01:45 +0200 |
commit | e1fddc8fdd22ed5a55fc7e7a81437c4663c7ba8c (patch) | |
tree | 8b89d209d035aa2538c4bf32facf32f4e0486e92 /tools/perf/scripts/python/powerpc-hcalls.py | |
parent | a2b1da09793d003410b57f96eaf7e83e43b7a50a (diff) |
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 'tools/perf/scripts/python/powerpc-hcalls.py')
0 files changed, 0 insertions, 0 deletions