qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-block] [PATCH] block: all I/O should be completed before removing


From: Zhengui Li
Subject: [Qemu-block] [PATCH] block: all I/O should be completed before removing throttle timers.
Date: Sat, 21 Oct 2017 13:34:00 +0800

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.

Signed-off-by: Zhengui <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 45d9101..9edc452 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -660,7 +660,11 @@ void blk_remove_bs(BlockBackend *blk)
     notifier_list_notify(&blk->remove_bs_notifiers, blk);
     if (blk->public.throttle_group_member.throttle_state) {
         tt = &blk->public.throttle_group_member.throttle_timers;
+        BlockDriverState *bs;
+        bs = blk_bs(blk);
+        bdrv_drained_begin(bs);
         throttle_timers_detach_aio_context(tt);
+        bdrv_drained_end(bs);
     }
 
     blk_update_root_state(blk);
-- 
2.7.2.windows.1





reply via email to

[Prev in Thread] Current Thread [Next in Thread]