]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: snapshot: Mark file becoming backingStore as read-only
authorPeter Krempa <pkrempa@redhat.com>
Mon, 9 Dec 2019 11:44:41 +0000 (12:44 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 9 Dec 2019 13:07:24 +0000 (14:07 +0100)
For any backing file we set 'read-only' to true, but didn't do this when
modifying the recorded backing store when creating external snapshots.

This meant that qemu would attempt to open the backing-file read-write.
This would fail for example when selinux is used as qemu doesn't have
write permission for the backing file.

https://bugzilla.redhat.com/show_bug.cgi?id=1781079

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_driver.c

index e17e9ca86d9a4983e33bed180a506165507a608d..52c99dd2289af08e0b19ab8e8d74b363dc44a6d9 100644 (file)
@@ -14606,6 +14606,7 @@ qemuDomainSnapshotCreateInactiveExternal(virQEMUDriverPtr driver,
             goto cleanup;
 
         if (virStorageSourceHasBacking(defdisk->src)) {
+            defdisk->src->readonly = true;
             newsrc->backingStore = g_steal_pointer(&defdisk->src);
         } else {
             virObjectUnref(defdisk->src);
@@ -15457,6 +15458,7 @@ qemuDomainSnapshotDiskUpdateSource(virQEMUDriverPtr driver,
         qemuDomainSnapshotDiskUpdateSourceRenumber(dd->disk->src);
 
     if (dd->persistdisk) {
+        dd->persistdisk->src->readonly = true;
         dd->persistsrc->backingStore = g_steal_pointer(&dd->persistdisk->src);
         dd->persistdisk->src = g_steal_pointer(&dd->persistsrc);
     }