render / rpms / libvirt

Forked from rpms/libvirt 10 months ago
Clone
Blob Blame History Raw
From 19778995ed94278db561db198a402d232027aeb8 Mon Sep 17 00:00:00 2001
Message-Id: <19778995ed94278db561db198a402d232027aeb8@dist-git>
From: Peter Krempa <pkrempa@redhat.com>
Date: Fri, 28 Feb 2020 10:24:38 +0100
Subject: [PATCH] virStorageSourceNewFromBacking: Also transfer the format
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

When we create the new virStorageSource from the definitions stored in
the parent we should also use the 'backingStoreRawFormat' field to
populate the format.

Callers which use virStorageSourceNewFromBacking are also fixed to stop
setting the format manually.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
(cherry picked from commit 264b79c63a518df8ce32a78dda51ae554cd2d5f2)

https://bugzilla.redhat.com/show_bug.cgi?id=1798148
Message-Id: <c9015f51f31c9a088983562298aaf61b1c43d927.1582881363.git.pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
---
 src/storage/storage_util.c | 5 +----
 src/util/virstoragefile.c  | 3 +--
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c
index c562cf313f..f3e899d0ca 100644
--- a/src/storage/storage_util.c
+++ b/src/storage/storage_util.c
@@ -3316,7 +3316,6 @@ static int
 storageBackendProbeTarget(virStorageSourcePtr target,
                           virStorageEncryptionPtr *encryption)
 {
-    int backingStoreFormat;
     int rc;
     struct stat sb;
     g_autoptr(virStorageSource) meta = NULL;
@@ -3347,15 +3346,13 @@ storageBackendProbeTarget(virStorageSourcePtr target,
     if (!(meta = virStorageFileGetMetadataFromFD(target->path,
                                                  fd,
                                                  VIR_STORAGE_FILE_AUTO,
-                                                 &backingStoreFormat)))
+                                                 NULL)))
         return -1;
 
     if (meta->backingStoreRaw) {
         if (virStorageSourceNewFromBacking(meta, &target->backingStore) < 0)
             return -1;
 
-        target->backingStore->format = backingStoreFormat;
-
         /* XXX: Remote storage doesn't play nicely with volumes backed by
          * remote storage. To avoid trouble, just fake the backing store is RAW
          * and put the string from the metadata as the path of the target. */
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index d594ee3695..d80780e291 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -3824,6 +3824,7 @@ virStorageSourceNewFromBacking(virStorageSourcePtr parent,
                                            backing)) < 0)
         return rc;
 
+    (*backing)->format = parent->backingStoreRawFormat;
     (*backing)->readonly = true;
     return rc;
 }
@@ -5028,8 +5029,6 @@ virStorageFileGetMetadataRecurse(virStorageSourcePtr src,
         if (rv == 1)
             return 0;
 
-        backingStore->format = src->backingStoreRawFormat;
-
         if (backingStore->format == VIR_STORAGE_FILE_AUTO) {
             /* Assuming the backing store to be raw can lead to failures. We do
              * it only when we must not report an error to prevent losing VMs.
-- 
2.25.1