@@ -164,12 +164,7 @@ static void blk_delete(BlockBackend *blk)
{
assert(!blk->refcnt);
assert(!blk->dev);
- if (blk->bs) {
- assert(blk->bs->blk == blk);
- blk->bs->blk = NULL;
- bdrv_unref(blk->bs);
- blk->bs = NULL;
- }
+ blk_remove_bs(blk);
/* Avoid double-remove after blk_hide_on_behalf_of_do_drive_del() */
if (blk->name[0]) {
QTAILQ_REMOVE(&blk_backends, blk, link);
@@ -333,6 +328,8 @@ void blk_remove_bs(BlockBackend *blk)
return;
}
+ assert(blk->bs->blk == blk);
+
blk_update_root_state(blk);
bdrv_unref(blk->bs);
Signed-off-by: Max Reitz <mreitz@redhat.com> --- block/block-backend.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)