[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL for-2.11-rc2 1/5] block: all I/O should be completed
|
From: |
Stefan Hajnoczi |
|
Subject: |
[Qemu-devel] [PULL for-2.11-rc2 1/5] block: all I/O should be completed before removing throttle timers. |
|
Date: |
Tue, 14 Nov 2017 10:37:17 +0000 |
From: Zhengui <address@hidden>
In blk_remove_bs, all I/O should be completed before removing throttle
timers. If there has inflight I/O, removing throttle timers here will
cause the inflight I/O never return.
This patch add bdrv_drained_begin before throttle_timers_detach_aio_context
to let all I/O completed before removing throttle timers.
[Moved declaration of bs as suggested by Alberto Garcia
<address@hidden>.
--Stefan]
Signed-off-by: Zhengui <address@hidden>
Reviewed-by: Stefan Hajnoczi <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
block/block-backend.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/block/block-backend.c b/block/block-backend.c
index 45d9101be3..18e543780d 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -655,12 +655,16 @@ BlockBackend *blk_by_public(BlockBackendPublic *public)
*/
void blk_remove_bs(BlockBackend *blk)
{
+ BlockDriverState *bs;
ThrottleTimers *tt;
notifier_list_notify(&blk->remove_bs_notifiers, blk);
if (blk->public.throttle_group_member.throttle_state) {
tt = &blk->public.throttle_group_member.throttle_timers;
+ bs = blk_bs(blk);
+ bdrv_drained_begin(bs);
throttle_timers_detach_aio_context(tt);
+ bdrv_drained_end(bs);
}
blk_update_root_state(blk);
--
2.13.6
- [Qemu-devel] [PULL for-2.11-rc2 0/5] Block patches, Stefan Hajnoczi, 2017/11/14
- [Qemu-devel] [PULL for-2.11-rc2 1/5] block: all I/O should be completed before removing throttle timers.,
Stefan Hajnoczi <=
- [Qemu-devel] [PULL for-2.11-rc2 2/5] throttle-groups: drain before detaching ThrottleState, Stefan Hajnoczi, 2017/11/14
- [Qemu-devel] [PULL for-2.11-rc2 3/5] block: Check for inserted BlockDriverState in blk_io_limits_disable(), Stefan Hajnoczi, 2017/11/14
- [Qemu-devel] [PULL for-2.11-rc2 4/5] block: Leave valid throttle timers when removing a BDS from a backend, Stefan Hajnoczi, 2017/11/14
- [Qemu-devel] [PULL for-2.11-rc2 5/5] qemu-iotests: Test I/O limits with removable media, Stefan Hajnoczi, 2017/11/14
- Re: [Qemu-devel] [PULL for-2.11-rc2 0/5] Block patches, Peter Maydell, 2017/11/14