From 99932293ca5198ac6bf0b13fcc6776f93d9bb840 Mon Sep 17 00:00:00 2001 Message-Id: <99932293ca5198ac6bf0b13fcc6776f93d9bb840.1368098699.git.minovotn@redhat.com> In-Reply-To: <618a4b91ddb04b21f9dc0c1defe7693fb7cc1748.1368098699.git.minovotn@redhat.com> References: <618a4b91ddb04b21f9dc0c1defe7693fb7cc1748.1368098699.git.minovotn@redhat.com> From: Laszlo Ersek Date: Thu, 18 Apr 2013 19:04:43 +0200 Subject: [PATCH 19/24] qmp: qmp_transaction(): pass Error object to bdrv_img_create() RH-Author: Laszlo Ersek Message-id: <1366311884-18091-5-git-send-email-lersek@redhat.com> Patchwork-id: 50691 O-Subject: [RHEL-6.5 qemu-kvm PATCH 4/5] qmp: qmp_transaction(): pass Error object to bdrv_img_create() Bugzilla: 877240 RH-Acked-by: Stefan Hajnoczi RH-Acked-by: Paolo Bonzini RH-Acked-by: Luiz Capitulino Signed-off-by: Luiz Capitulino Signed-off-by: Kevin Wolf RHEL-6 notes: - Manual backport of 43e17041156ddecac8a7500648e71287ba270c0a. - This backport should also cover upstream commit cf8f242; in upstream qmp_drive_mirror() is non-transactionable, while in RHEL-6 it is. (See RHEL-6 commits 50136880 and ea6612a1.) Signed-off-by: Laszlo Ersek --- blockdev.c | 22 +++++++++++----------- 1 files changed, 11 insertions(+), 11 deletions(-) Signed-off-by: Michal Novotny --- blockdev.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/blockdev.c b/blockdev.c index c5213a9..34091d3 100644 --- a/blockdev.c +++ b/blockdev.c @@ -851,6 +851,7 @@ void qmp_transaction(BlockdevActionList *dev_list, Error **errp) int ret = 0; BlockdevActionList *dev_entry = dev_list; BlkTransactionStates *states, *next; + Error *local_err = NULL; QSIMPLEQ_HEAD(snap_bdrv_states, BlkTransactionStates) snap_bdrv_states; QSIMPLEQ_INIT(&snap_bdrv_states); @@ -974,29 +975,28 @@ void qmp_transaction(BlockdevActionList *dev_list, Error **errp) assert(format && drv); bdrv_get_geometry(states->old_bs, &size); size *= 512; - ret = bdrv_img_create(new_image_file, format, - NULL, NULL, NULL, size, flags, NULL); + bdrv_img_create(new_image_file, format, + NULL, NULL, NULL, size, flags, &local_err); } else { /* create new image w/backing file */ switch (mode) { case NEW_IMAGE_MODE_EXISTING: - ret = 0; break; case NEW_IMAGE_MODE_ABSOLUTE_PATHS: - ret = bdrv_img_create(new_image_file, format, - source->filename, - source->drv->format_name, - NULL, -1, flags, NULL); + bdrv_img_create(new_image_file, format, + source->filename, + source->drv->format_name, + NULL, -1, flags, &local_err); break; default: - ret = -1; + error_setg(&local_err, "%s: invalid NewImageMode %u", + __FUNCTION__, (unsigned)mode); break; } } - if (ret) { - error_set(errp, QERR_OPEN_FILE_FAILED, new_image_file, - strerror(-ret)); + if (error_is_set(&local_err)) { + error_propagate(errp, local_err); goto delete_and_fail; } -- 1.7.11.7