Message ID | 1385636547-26826-1-git-send-email-kwolf@redhat.com |
---|---|
State | New |
Headers | show |
On 2013年11月28日 19:02, Kevin Wolf wrote: > 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 <kwolf@redhat.com> > --- > block.c | 3 ++- > block/qcow2.c | 3 ++- > block/vmdk.c | 2 +- > 3 files changed, 5 insertions(+), 3 deletions(-) > > diff --git a/block.c b/block.c > index 03e45fc..e2745a5 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 2fe37ed..8e2b6c7 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 6555663..5fb6c81 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; > Reviewed-by: Fam Zheng <famz@redhat.com>
Le Thursday 28 Nov 2013 à 12:02:27 (+0100), Kevin Wolf a écrit : > 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 <kwolf@redhat.com> > --- > block.c | 3 ++- > block/qcow2.c | 3 ++- > block/vmdk.c | 2 +- > 3 files changed, 5 insertions(+), 3 deletions(-) > > diff --git a/block.c b/block.c > index 03e45fc..e2745a5 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 2fe37ed..8e2b6c7 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 6555663..5fb6c81 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; > -- > 1.8.1.4 > > Reviewed-by: Benoit Canet <benoit@irqsave.net> No Tested-By as it doesn't apply to kevin/master yet.
Reviewed-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
diff --git a/block.c b/block.c index 03e45fc..e2745a5 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 2fe37ed..8e2b6c7 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 6555663..5fb6c81 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;
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 <kwolf@redhat.com> --- block.c | 3 ++- block/qcow2.c | 3 ++- block/vmdk.c | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-)