From: Peter Krempa Date: Mon, 9 Dec 2019 11:44:41 +0000 (+0100) Subject: qemu: snapshot: Mark file becoming backingStore as read-only X-Git-Tag: v6.0.0-rc1~433 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6f6a1763a1c227b7b5d92ec813c02ce1b26b10a2;p=thirdparty%2Flibvirt.git qemu: snapshot: Mark file becoming backingStore as read-only 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 Reviewed-by: Ján Tomko --- diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index e17e9ca86d..52c99dd228 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -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); }