* qemuSnapshotDiskUpdateSource:
* @vm: domain object
* @dd: snapshot disk data object
+ * @asyncJob: async job type
*
* Updates disk definition after a successful snapshot.
*/
static void
qemuSnapshotDiskUpdateSource(virDomainObj *vm,
- qemuSnapshotDiskData *dd)
+ qemuSnapshotDiskData *dd,
+ virDomainAsyncJob asyncJob)
{
qemuDomainObjPrivate *priv = vm->privateData;
virQEMUDriver *driver = priv->driver;
if (qemuSecurityMoveImageMetadata(driver, vm, dd->disk->src, dd->src) < 0)
VIR_WARN("Unable to move disk metadata on vm %s", vm->def->name);
+ /* if the original image has a data-file turn it read-only */
+ if (dd->disk->src->dataFileStore) {
+ ignore_value(qemuBlockReopenReadOnly(vm, dd->disk->src->dataFileStore, asyncJob));
+ }
+
/* unlock the write lock on the original image as qemu will no longer write to it */
virDomainLockImageDetach(driver->lockManager, vm, dd->disk->src);
virDomainAuditDisk(snapctxt->vm, dd->disk->src, dd->src, "snapshot", rc >= 0);
if (rc == 0)
- qemuSnapshotDiskUpdateSource(snapctxt->vm, dd);
+ qemuSnapshotDiskUpdateSource(snapctxt->vm, dd, snapctxt->asyncJob);
}
if (rc < 0)