mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +00:00
storage: Properly track that backing chain members are readonly
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@redhat.com> Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
5dbdd401e8
commit
3817fa10c4
@ -8735,6 +8735,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);
|
||||
|
@ -14680,6 +14680,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);
|
||||
|
@ -3425,6 +3425,7 @@ virStorageSourceNewFromBacking(virStorageSourcePtr parent)
|
||||
if (virStorageSourceInitChainElement(ret, parent, true) < 0)
|
||||
goto error;
|
||||
|
||||
ret->readonly = true;
|
||||
ret->detected = true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user