From: Kevin Wolf Date: Thu, 28 Nov 2013 10:58:02 +0000 (+0100) Subject: block: Use BDRV_O_NO_BACKING where appropriate X-Git-Tag: v2.0.0-rc0~199^2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c9fbb99d41b05acf0d7b93deb2fcdbf9047c238e;p=thirdparty%2Fqemu.git block: Use BDRV_O_NO_BACKING where appropriate If you open an image temporarily just because you want to check its size or get it flushed, there's no real reason to open the whole backing file chain. Signed-off-by: Kevin Wolf Reviewed-by: Fam Zheng Reviewed-by: Benoit Canet --- diff --git a/block.c b/block.c index 08dd7f22949..3d78581c637 100644 --- a/block.c +++ b/block.c @@ -1061,7 +1061,8 @@ int bdrv_open(BlockDriverState *bs, const char *filename, QDict *options, /* Get the required size from the image */ bs1 = bdrv_new(""); QINCREF(options); - ret = bdrv_open(bs1, filename, options, 0, drv, &local_err); + ret = bdrv_open(bs1, filename, options, BDRV_O_NO_BACKING, + drv, &local_err); if (ret < 0) { bdrv_unref(bs1); goto fail; diff --git a/block/qcow2.c b/block/qcow2.c index 2fe37ed6cbf..8e2b6c7548a 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -1588,7 +1588,8 @@ static int qcow2_create2(const char *filename, int64_t total_size, /* Reopen the image without BDRV_O_NO_FLUSH to flush it before returning */ ret = bdrv_open(bs, filename, NULL, - BDRV_O_RDWR | BDRV_O_CACHE_WB, drv, &local_err); + BDRV_O_RDWR | BDRV_O_CACHE_WB | BDRV_O_NO_BACKING, + drv, &local_err); if (error_is_set(&local_err)) { error_propagate(errp, local_err); goto out; diff --git a/block/vmdk.c b/block/vmdk.c index 6555663a7e5..5fb6c813efd 100644 --- a/block/vmdk.c +++ b/block/vmdk.c @@ -1690,7 +1690,7 @@ static int vmdk_create(const char *filename, QEMUOptionParameter *options, } if (backing_file) { BlockDriverState *bs = bdrv_new(""); - ret = bdrv_open(bs, backing_file, NULL, 0, NULL, errp); + ret = bdrv_open(bs, backing_file, NULL, BDRV_O_NO_BACKING, NULL, errp); if (ret != 0) { bdrv_unref(bs); return ret;