From: Max Reitz <mreitz@redhat.com>
To: qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
Markus Armbruster <armbru@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Max Reitz <mreitz@redhat.com>
Subject: [Qemu-devel] [PATCH v2 06/14] qemu-img: Use blk_new_open() in img_rebase()
Date: Thu, 22 Jan 2015 15:10:03 -0500 [thread overview]
Message-ID: <1421957411-31759-7-git-send-email-mreitz@redhat.com> (raw)
In-Reply-To: <1421957411-31759-1-git-send-email-mreitz@redhat.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
---
qemu-img.c | 57 ++++++++++++++++++++++++---------------------------------
1 file changed, 24 insertions(+), 33 deletions(-)
diff --git a/qemu-img.c b/qemu-img.c
index f82f62b..404580e 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -2430,7 +2430,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;
@@ -2524,54 +2523,46 @@ 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) {
- error_report("Invalid format name: '%s'", out_basefmt);
- ret = -1;
- goto out;
- }
- }
-
/* For safe rebasing we need to compare old and new backing file */
if (!unsafe) {
char backing_name[1024];
+ QDict *options = NULL;
+
+ if (!unsafe && bs->backing_format[0] != '\0') {
+ options = qdict_new();
+ qdict_put_obj(options, "driver",
+ QOBJECT(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_obj(options, "driver",
+ QOBJECT(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
next prev parent reply other threads:[~2015-01-22 20:10 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-22 20:09 [Qemu-devel] [PATCH v2 00/14] block: Remove "growable", add blk_new_open() Max Reitz
2015-01-22 20:09 ` [Qemu-devel] [PATCH v2 01/14] block: Lift some BDS functions to the BlockBackend Max Reitz
2015-01-22 20:09 ` [Qemu-devel] [PATCH v2 02/14] block: Add blk_new_open() Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 03/14] blockdev: Use blk_new_open() in blockdev_init() Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 04/14] block/xen: Use blk_new_open() in blk_connect() Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 05/14] qemu-img: Use blk_new_open() in img_open() Max Reitz
2015-01-22 20:10 ` Max Reitz [this message]
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 07/14] qemu-img: Use BlockBackend as far as possible Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 08/14] qemu-nbd: Use blk_new_open() in main() Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 09/14] qemu-io: Use blk_new_open() in openfile() Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 10/14] qemu-io: Remove "growable" option Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 11/14] qemu-io: Use BlockBackend Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 12/14] block: Clamp BlockBackend requests Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 13/14] block: Remove "growable" from BDS Max Reitz
2015-01-22 20:10 ` [Qemu-devel] [PATCH v2 14/14] block: Keep bdrv_check*_request()'s return value Max Reitz
2015-01-26 12:18 ` [Qemu-devel] [PATCH v2 00/14] block: Remove "growable", add blk_new_open() Stefano Stabellini
2015-01-26 14:01 ` Max Reitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1421957411-31759-7-git-send-email-mreitz@redhat.com \
--to=mreitz@redhat.com \
--cc=armbru@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).