[libvirt] [PATCH 1/2] qemu: blockcopy: Report error on image format detection failure

Peter Krempa pkrempa at redhat.com
Fri Nov 29 13:43:59 UTC 2019


We tolerate image format detection during block copy in very specific
circumstances, but the code didn't error out on failure of the format
detection.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/qemu/qemu_driver.c | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 18bd0101e7..e43d6554a1 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -18104,15 +18104,14 @@ qemuDomainBlockCopyCommon(virDomainObjPtr vm,
         if (!mirror_reuse) {
             mirror->format = disk->src->format;
         } else {
-            if (mirror_initialized &&
-                virStorageSourceIsLocalStorage(mirror)) {
-                /* If the user passed the REUSE_EXT flag, then either they
-                 * can also pass the RAW flag or use XML to tell us the format.
-                 * So if we get here, we assume it is safe for us to probe the
-                 * format from the file that we will be using.  */
-                mirror->format = virStorageFileProbeFormat(mirror->path, cfg->user,
-                                                           cfg->group);
-            } else {
+            /* If the user passed the REUSE_EXT flag, then either they
+             * can also pass the RAW flag or use XML to tell us the format.
+             * So if we get here, we assume it is safe for us to probe the
+             * format from the file that we will be using.  */
+            if (!mirror_initialized ||
+                !virStorageSourceIsLocalStorage(mirror) ||
+                (mirror->format = virStorageFileProbeFormat(mirror->path, cfg->user,
+                                                            cfg->group)) < 0) {
                 virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                                _("reused mirror destination format must be specified"));
                 goto endjob;
-- 
2.23.0




More information about the libvir-list mailing list