/**
* qemuHotplugRemoveManagedPR:
- * @driver: QEMU driver object
* @vm: domain object
+ * @src: storage source that is being removed
* @asyncJob: asynchronous job identifier
*
* Removes the managed PR object from @vm if the configuration does not require
*/
void
qemuHotplugRemoveManagedPR(virDomainObj *vm,
+ virStorageSource *src,
virDomainAsyncJob asyncJob)
{
qemuDomainObjPrivate *priv = vm->privateData;
virErrorPtr orig_err;
+ if (!virStorageSourceChainHasManagedPR(src))
+ return;
+
if (qemuDomainDefHasManagedPR(vm))
return;
ignore_value(qemuDomainStorageSourceChainAccessRevoke(driver, vm, oldsrc));
- if (virStorageSourceChainHasManagedPR(oldsrc))
- qemuHotplugRemoveManagedPR(vm, VIR_ASYNC_JOB_NONE);
+ qemuHotplugRemoveManagedPR(vm, oldsrc, VIR_ASYNC_JOB_NONE);
/* media was changed, so we can remove the old media definition now */
g_clear_pointer(&oldsrc, virObjectUnref);
rollback:
ignore_value(qemuDomainStorageSourceChainAccessRevoke(driver, vm, newsrc));
- if (virStorageSourceChainHasManagedPR(newsrc))
- qemuHotplugRemoveManagedPR(vm, VIR_ASYNC_JOB_NONE);
+ qemuHotplugRemoveManagedPR(vm, newsrc, VIR_ASYNC_JOB_NONE);
/* revert old image do the disk definition */
disk->src = oldsrc;
if (releaseSeclabel)
ignore_value(qemuDomainStorageSourceChainAccessRevoke(driver, vm, disk->src));
- if (virStorageSourceChainHasManagedPR(disk->src))
- qemuHotplugRemoveManagedPR(vm, VIR_ASYNC_JOB_NONE);
+ qemuHotplugRemoveManagedPR(vm, disk->src, VIR_ASYNC_JOB_NONE);
}
qemuDomainSecretDiskDestroy(disk);
qemuDomainCleanupStorageSourceFD(disk->src);
if (diskBackend)
qemuDomainStorageSourceChainAccessRevoke(driver, vm, disk->src);
- if (virStorageSourceChainHasManagedPR(disk->src))
- qemuHotplugRemoveManagedPR(vm, VIR_ASYNC_JOB_NONE);
+ qemuHotplugRemoveManagedPR(vm, disk->src, VIR_ASYNC_JOB_NONE);
qemuNbdkitStopStorageSource(disk->src, vm, true);