[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v2 57/65] qemu-img: Use blk_new_open() in img_rebase(
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PULL v2 57/65] qemu-img: Use blk_new_open() in img_rebase() |
Date: |
Mon, 16 Feb 2015 15:46:22 +0000 |
From: Max Reitz <address@hidden>
Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
qemu-img.c | 49 +++++++++++++++++++++++--------------------------
1 file changed, 23 insertions(+), 26 deletions(-)
diff --git a/qemu-img.c b/qemu-img.c
index 7dea370..dbb7437 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -2435,7 +2435,6 @@ static int img_rebase(int argc, char **argv)
{
BlockBackend *blk = NULL, *blk_old_backing = NULL, *blk_new_backing = NULL;
BlockDriverState *bs = NULL, *bs_old_backing = NULL, *bs_new_backing =
NULL;
- BlockDriver *old_backing_drv, *new_backing_drv;
char *filename;
const char *fmt, *cache, *src_cache, *out_basefmt, *out_baseimg;
int c, flags, src_flags, ret;
@@ -2529,22 +2528,8 @@ static int img_rebase(int argc, char **argv)
}
bs = blk_bs(blk);
- /* Find the right drivers for the backing files */
- old_backing_drv = NULL;
- new_backing_drv = NULL;
-
- if (!unsafe && bs->backing_format[0] != '\0') {
- old_backing_drv = bdrv_find_format(bs->backing_format);
- if (old_backing_drv == NULL) {
- error_report("Invalid format name: '%s'", bs->backing_format);
- ret = -1;
- goto out;
- }
- }
-
if (out_basefmt != NULL) {
- new_backing_drv = bdrv_find_format(out_basefmt);
- if (new_backing_drv == NULL) {
+ if (bdrv_find_format(out_basefmt) == NULL) {
error_report("Invalid format name: '%s'", out_basefmt);
ret = -1;
goto out;
@@ -2554,29 +2539,41 @@ static int img_rebase(int argc, char **argv)
/* For safe rebasing we need to compare old and new backing file */
if (!unsafe) {
char backing_name[PATH_MAX];
+ QDict *options = NULL;
+
+ if (bs->backing_format[0] != '\0') {
+ options = qdict_new();
+ qdict_put(options, "driver", qstring_from_str(bs->backing_format));
+ }
- blk_old_backing = blk_new_with_bs("old_backing", &error_abort);
- bs_old_backing = blk_bs(blk_old_backing);
bdrv_get_backing_filename(bs, backing_name, sizeof(backing_name));
- ret = bdrv_open(&bs_old_backing, backing_name, NULL, NULL, src_flags,
- old_backing_drv, &local_err);
- if (ret) {
+ blk_old_backing = blk_new_open("old_backing", backing_name, NULL,
+ options, src_flags, &local_err);
+ if (!blk_old_backing) {
error_report("Could not open old backing file '%s': %s",
backing_name, error_get_pretty(local_err));
error_free(local_err);
goto out;
}
+ bs_old_backing = blk_bs(blk_old_backing);
+
if (out_baseimg[0]) {
- blk_new_backing = blk_new_with_bs("new_backing", &error_abort);
- bs_new_backing = blk_bs(blk_new_backing);
- ret = bdrv_open(&bs_new_backing, out_baseimg, NULL, NULL,
src_flags,
- new_backing_drv, &local_err);
- if (ret) {
+ if (out_basefmt) {
+ options = qdict_new();
+ qdict_put(options, "driver", qstring_from_str(out_basefmt));
+ } else {
+ options = NULL;
+ }
+
+ blk_new_backing = blk_new_open("new_backing", out_baseimg, NULL,
+ options, src_flags, &local_err);
+ if (!blk_new_backing) {
error_report("Could not open new backing file '%s': %s",
out_baseimg, error_get_pretty(local_err));
error_free(local_err);
goto out;
}
+ bs_new_backing = blk_bs(blk_new_backing);
}
}
--
2.1.0
- [Qemu-devel] [PULL v2 46/65] qemu-iotests: Allow caller to disable underscore convertion for qmp, (continued)
- [Qemu-devel] [PULL v2 46/65] qemu-iotests: Allow caller to disable underscore convertion for qmp, Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 47/65] qemu-iotests: Add 093 for IO throttling, Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 50/65] block: Lift some BDS functions to the BlockBackend, Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 49/65] iotests: Add test for qemu-img convert to NBD, Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 52/65] block: Add Error parameter to bdrv_find_protocol(), Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 53/65] iotests: Add test for driver=qcow2, format=qcow2, Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 48/65] qemu-img: Fix qemu-img convert -n, Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 51/65] block: Add blk_new_open(), Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 56/65] qemu-img: Use blk_new_open() in img_open(), Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 54/65] blockdev: Use blk_new_open() in blockdev_init(), Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 57/65] qemu-img: Use blk_new_open() in img_rebase(),
Stefan Hajnoczi <=
- [Qemu-devel] [PULL v2 55/65] block/xen: Use blk_new_open() in blk_connect(), Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 58/65] qemu-img: Use BlockBackend as far as possible, Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 59/65] qemu-nbd: Use blk_new_open() in main(), Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 63/65] block: Clamp BlockBackend requests, Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 61/65] qemu-io: Remove "growable" option, Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 60/65] qemu-io: Use blk_new_open() in openfile(), Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 62/65] qemu-io: Use BlockBackend, Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 64/65] block: Remove "growable" from BDS, Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 65/65] block: Keep bdrv_check*_request()'s return value, Stefan Hajnoczi, 2015/02/16
- [Qemu-devel] [PULL v2 27/65] libqos/ahci: Add cmd response sanity check helpers, Stefan Hajnoczi, 2015/02/16