On Fri, Jul 26, 2013 at 02:43:44PM +0800, Wenchao Xia wrote:
Reviewed-by: Wenchao Xia <xiaw...@linux.vnet.ibm.com>

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: qemu-sta...@nongnu.org
Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com>
---
   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


Reply via email to