blockdev: Split monitor reference from BB creation
commitefaa7c4eeb7490c6f37f34fbc77e91f29363eebd
authorMax Reitz <mreitz@redhat.com>
Wed, 16 Mar 2016 18:54:38 +0000 (16 19:54 +0100)
committerKevin Wolf <kwolf@redhat.com>
Thu, 17 Mar 2016 14:47:56 +0000 (17 15:47 +0100)
tree20c63d015aed0a3032b58f641c9d43f9ce8b8b8e
parente5e785500bf1ca286f9069bc13f3ed8cb2e9eb8a
blockdev: Split monitor reference from BB creation

Before this patch, blk_new() automatically assigned a name to the new
BlockBackend and considered it referenced by the monitor. This patch
removes the implicit monitor_add_blk() call from blk_new() (and
consequently the monitor_remove_blk() call from blk_delete(), too) and
thus blk_new() (and related functions) no longer take a BB name
argument.

In fact, there is only a single point where blk_new()/blk_new_open() is
called and the new BB is monitor-owned, and that is in blockdev_init().
Besides thus relieving us from having to invent names for all of the BBs
we use in qemu-img, this fixes a bug where qemu cannot create a new
image if there already is a monitor-owned BB named "image".

If a BB and its BDS tree are created in a single operation, as of this
patch the BDS tree will be created before the BB is given a name
(whereas it was the other way around before). This results in minor
change to the output of iotest 087, whose reference output is amended
accordingly.

Signed-off-by: Max Reitz <mreitz@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
18 files changed:
block/block-backend.c
block/parallels.c
block/qcow.c
block/qcow2.c
block/qed.c
block/sheepdog.c
block/vdi.c
block/vhdx.c
block/vmdk.c
block/vpc.c
blockdev.c
device-hotplug.c
hw/block/xen_disk.c
include/sysemu/block-backend.h
qemu-img.c
qemu-io.c
qemu-nbd.c
tests/qemu-iotests/087.out