37 lines
1002 B
Diff
37 lines
1002 B
Diff
|
From 670599a08c052f6ef841743731a8f06d4b50ec99 Mon Sep 17 00:00:00 2001
|
||
|
From: Stefan Hajnoczi <stefanha@redhat.com>
|
||
|
Date: Thu, 27 Jun 2013 15:32:26 +0200
|
||
|
Subject: [PATCH] block: ensure bdrv_drain_all() works during bdrv_delete()
|
||
|
|
||
|
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-stable@nongnu.org
|
||
|
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
|
||
|
(cherry picked from commit e1b5c52e04d04bb93546c6e37e8884889d047cb1)
|
||
|
|
||
|
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
|
||
|
---
|
||
|
block.c | 4 ++--
|
||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/block.c b/block.c
|
||
|
index 01b66d8..d5ce8d3 100644
|
||
|
--- a/block.c
|
||
|
+++ b/block.c
|
||
|
@@ -1606,11 +1606,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);
|
||
|
}
|
||
|
|