[RFC PATCH 01/30] storage: Properly track that backing chain members are readonly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Everything besides the top of the chain is readonly. Track this when
parsing the XML and detecting the chain from the disk. Also fix the
state when taking snapshots.

All other cases where the top image is changed already preserve the
readonly state from the original image.

Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx>
---
 src/conf/domain_conf.c    | 3 +++
 src/qemu/qemu_driver.c    | 3 +++
 src/util/virstoragefile.c | 1 +
 3 files changed, 7 insertions(+)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 35666c1347..e2c10c7757 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -8711,6 +8711,9 @@ virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt,
     if (VIR_ALLOC(backingStore) < 0)
         goto cleanup;

+    /* backing store is always read-only */
+    backingStore->readonly = true;
+
     /* terminator does not have a type */
     if (!(type = virXMLPropString(ctxt->node, "type"))) {
         VIR_STEAL_PTR(src->backingStore, backingStore);
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 5673d9fd8d..d5374541e0 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -14671,6 +14671,9 @@ qemuDomainSnapshotUpdateDiskSources(qemuDomainSnapshotDiskDataPtr dd,
     if (dd->initialized)
         virStorageFileDeinit(dd->src);

+    /* the old disk image is now readonly */
+    dd->disk->src->readonly = true;
+
     VIR_STEAL_PTR(dd->disk->src->relPath, dd->relPath);
     VIR_STEAL_PTR(dd->src->backingStore, dd->disk->src);
     VIR_STEAL_PTR(dd->disk->src, dd->src);
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 531540ac91..d6ad6e1d0f 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -3425,6 +3425,7 @@ virStorageSourceNewFromBacking(virStorageSourcePtr parent)
         if (virStorageSourceInitChainElement(ret, parent, true) < 0)
             goto error;

+        ret->readonly = true;
         ret->detected = true;
     }

-- 
2.14.3

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux