Blame SOURCES/libvirt-qemu-process-Move-handling-of-non-backing-files-into-qemuDomainDetermineDiskChain.patch

c1c534
From 3ad4635badd77642d59d3789286da72abb66ee72 Mon Sep 17 00:00:00 2001
c1c534
Message-Id: <3ad4635badd77642d59d3789286da72abb66ee72@dist-git>
c1c534
From: Peter Krempa <pkrempa@redhat.com>
c1c534
Date: Fri, 1 Dec 2017 15:57:02 +0100
c1c534
Subject: [PATCH] qemu: process: Move handling of non-backing files into
c1c534
 qemuDomainDetermineDiskChain
c1c534
c1c534
Until now we would skip loading of the backing chain for files which
c1c534
don't support backing chains only when starting up the VM. Move the
c1c534
check from qemuProcessPrepareHostStorage with some adaptations so that's
c1c534
always applied.
c1c534
c1c534
(cherry picked from commit 24e47ee2b93312742f73a785b9ca788df4677749)
c1c534
c1c534
 Conflicts:
c1c534
	src/qemu/qemu_domain.c:
c1c534
        - since quite lot of the blockdev saga was not backported and
c1c534
        the previous commit is different this one does not apply as
c1c534
        well.
c1c534
c1c534
        The changes are to accomodate the not-backported change in
c1c534
        return code logic of qemuDomainDetermineDiskChain which in this
c1c534
        instance initializes ret to 0 instead of -1, which was changed
c1c534
        in a patch that was not backported.
c1c534
c1c534
https://bugzilla.redhat.com/show_bug.cgi?id=1509110
c1c534
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
c1c534
---
c1c534
 src/qemu/qemu_domain.c  | 17 +++++++++++++++++
c1c534
 src/qemu/qemu_process.c | 10 ----------
c1c534
 2 files changed, 17 insertions(+), 10 deletions(-)
c1c534
c1c534
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
c1c534
index 13d120040b..33cb3df949 100644
c1c534
--- a/src/qemu/qemu_domain.c
c1c534
+++ b/src/qemu/qemu_domain.c
c1c534
@@ -6358,6 +6358,23 @@ qemuDomainDetermineDiskChain(virQEMUDriverPtr driver,
c1c534
     if (force_probe)
c1c534
         virStorageSourceBackingStoreClear(disk->src);
c1c534
 
c1c534
+    /* There is no need to check the backing chain for disks without backing
c1c534
+     * support */
c1c534
+    if (virStorageSourceIsLocalStorage(disk->src) &&
c1c534
+        disk->src->format > VIR_STORAGE_FILE_NONE &&
c1c534
+        disk->src->format < VIR_STORAGE_FILE_BACKING) {
c1c534
+
c1c534
+        if (!virFileExists(disk->src->path)) {
c1c534
+            if (report_broken)
c1c534
+                virStorageFileReportBrokenChain(errno, disk->src, disk->src);
c1c534
+
c1c534
+            ret = -1;
c1c534
+            goto cleanup;
c1c534
+        }
c1c534
+
c1c534
+        goto cleanup;
c1c534
+    }
c1c534
+
c1c534
     if (virStorageSourceHasBacking(disk->src))
c1c534
         goto cleanup;
c1c534
 
c1c534
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
c1c534
index f7808227a8..91426ad3c3 100644
c1c534
--- a/src/qemu/qemu_process.c
c1c534
+++ b/src/qemu/qemu_process.c
c1c534
@@ -5554,20 +5554,10 @@ qemuProcessPrepareHostStorage(virQEMUDriverPtr driver,
c1c534
     for (i = vm->def->ndisks; i > 0; i--) {
c1c534
         size_t idx = i - 1;
c1c534
         virDomainDiskDefPtr disk = vm->def->disks[idx];
c1c534
-        virStorageFileFormat format = virDomainDiskGetFormat(disk);
c1c534
 
c1c534
         if (virStorageSourceIsEmpty(disk->src))
c1c534
             continue;
c1c534
 
c1c534
-        /* There is no need to check the backing chain for disks
c1c534
-         * without backing support, the fact that the file exists is
c1c534
-         * more than enough */
c1c534
-        if (virStorageSourceIsLocalStorage(disk->src) &&
c1c534
-            format > VIR_STORAGE_FILE_NONE &&
c1c534
-            format < VIR_STORAGE_FILE_BACKING &&
c1c534
-            virFileExists(virDomainDiskGetSource(disk)))
c1c534
-            continue;
c1c534
-
c1c534
         if (qemuDomainDetermineDiskChain(driver, vm, disk, true, true) >= 0)
c1c534
             continue;
c1c534
 
c1c534
-- 
c1c534
2.15.1
c1c534