|
From: | Wenchao Xia |
Subject: | Re: [Qemu-devel] [PATCH v6 01/18] block: ensure bdrv_drain_all() works during bdrv_delete() |
Date: | Wed, 07 Aug 2013 10:42:26 +0800 |
User-agent: | Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20130620 Thunderbird/17.0.7 |
On Fri, Jul 26, 2013 at 02:43:44PM +0800, Wenchao Xia wrote:Reviewed-by: Wenchao Xia <address@hidden> One question: old code missed itself in bdrv_drain_all(), is that a bug?Sorry, I don't understand the question. Can you rephrase it?
Before this patch, in the code path: bdrv_close()->bdrv_drain_all(), the *bs does not exist in bdrv_states, so the code missed the chance to drain the request on *bs. That is a bug, and this patch is actually a bugfix?
In bdrv_delete() make sure to call bdrv_make_anon() *after* bdrv_close() so that the device is still seen by bdrv_drain_all() when iterating bdrv_states. Cc: address@hidden Signed-off-by: Stefan Hajnoczi <address@hidden> --- block.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/block.c b/block.c index 6cd39fa..9d68270 100644 --- a/block.c +++ b/block.c @@ -1600,11 +1600,11 @@ void bdrv_delete(BlockDriverState *bs) assert(!bs->job); assert(!bs->in_use); + bdrv_close(bs); + /* remove from list, if necessary */ bdrv_make_anon(bs); - bdrv_close(bs); - g_free(bs); }-- Best Regards Wenchao Xia
-- Best Regards Wenchao Xia
[Prev in Thread] | Current Thread | [Next in Thread] |