diff options
author | Max Reitz <mreitz@redhat.com> | 2016-03-16 19:54:38 +0100 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2016-03-17 15:47:56 +0100 |
commit | efaa7c4eeb7490c6f37f34fbc77e91f29363eebd (patch) | |
tree | 20c63d015aed0a3032b58f641c9d43f9ce8b8b8e /block/vmdk.c | |
parent | e5e785500bf1ca286f9069bc13f3ed8cb2e9eb8a (diff) |
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>
Diffstat (limited to 'block/vmdk.c')
-rw-r--r-- | block/vmdk.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/block/vmdk.c b/block/vmdk.c index 2f8e6cf1c8..80f033835e 100644 --- a/block/vmdk.c +++ b/block/vmdk.c @@ -1661,7 +1661,7 @@ static int vmdk_create_extent(const char *filename, int64_t filesize, goto exit; } - blk = blk_new_open("extent", filename, NULL, NULL, + blk = blk_new_open(filename, NULL, NULL, BDRV_O_RDWR | BDRV_O_CACHE_WB | BDRV_O_PROTOCOL, &local_err); if (blk == NULL) { @@ -1946,7 +1946,7 @@ static int vmdk_create(const char *filename, QemuOpts *opts, Error **errp) goto exit; } - blk = blk_new_open("backing", full_backing, NULL, NULL, + blk = blk_new_open(full_backing, NULL, NULL, BDRV_O_NO_BACKING | BDRV_O_CACHE_WB, errp); g_free(full_backing); if (blk == NULL) { @@ -2018,7 +2018,7 @@ static int vmdk_create(const char *filename, QemuOpts *opts, Error **errp) } } - new_blk = blk_new_open("descriptor", filename, NULL, NULL, + new_blk = blk_new_open(filename, NULL, NULL, BDRV_O_RDWR | BDRV_O_CACHE_WB | BDRV_O_PROTOCOL, &local_err); if (new_blk == NULL) { |