From bee444cb2782df23066042547b4b8d8305695b49 Mon Sep 17 00:00:00 2001
Message-Id: <bee444cb2782df23066042547b4b8d8305695b49.1335361915.git.minovotn@redhat.com>
In-Reply-To: <ce1a7d1539a0b4b36555d1035257f57af7ae8478.1335361915.git.minovotn@redhat.com>
References: <ce1a7d1539a0b4b36555d1035257f57af7ae8478.1335361915.git.minovotn@redhat.com>
From: Paolo Bonzini <pbonzini@redhat.com>
Date: Tue, 24 Apr 2012 14:01:32 +0200
Subject: [PATCH 5/8] block: drive-reopen fixes

RH-Author: Paolo Bonzini <pbonzini@redhat.com>
Message-id: <1335276095-25813-6-git-send-email-pbonzini@redhat.com>
Patchwork-id: 39430
O-Subject: [RHEL 6.3 qemu-kvm PATCH 5/8] block: drive-reopen fixes
Bugzilla: 813862
RH-Acked-by: Marcelo Tosatti <mtosatti@redhat.com>
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
RH-Acked-by: Jeffrey Cody <jcody@redhat.com>

Bugzilla: 813862

- documentation fixes (Eric)
- refuse to reopen unless the job completes successfully (Marcelo)

RHEL-only.
---
 blockdev.c       |   10 +++++++++-
 qapi-schema.json |    3 ++-
 2 files changed, 11 insertions(+), 2 deletions(-)

Signed-off-by: Michal Novotny <minovotn@redhat.com>
---
 blockdev.c       |   10 +++++++++-
 qapi-schema.json |    3 ++-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/blockdev.c b/blockdev.c
index ae8ee6c..466bef5 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -706,7 +706,15 @@ void qmp___com_redhat_drive_reopen(const char *device, const char *new_image_fil
         return;
     }
     if (bs->job) {
-        block_job_cancel_sync(bs->job);
+        int ret = block_job_cancel_sync(bs->job);
+
+        /* Do not complete the switch if the job had an I/O error or
+         * was canceled (for mirroring, the target was not synchronized
+         * completely).
+         */
+        if (ret != 0) {
+            error_set(errp, QERR_DEVICE_IN_USE, device);
+        }
     }
     if (bdrv_in_use(bs)) {
         error_set(errp, QERR_DEVICE_IN_USE, device);
diff --git a/qapi-schema.json b/qapi-schema.json
index 22f770c..d37ee94 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -131,7 +131,8 @@
 # @new-image-file: the target of the new image. If the file doesn't exists the
 #                  command will fail.
 #
-# @format: #optional the format of the new image, default is 'qcow2'.
+# @format: #optional the format of the new image, default is to probe the
+#          image file
 #
 # @witness: A file descriptor name that was passed via getfd.  QEMU will write
 #   a single byte to this file descriptor before completing the command
-- 
1.7.7.6