mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
qemuDomainRemoveDiskDevice: Move 'copy-on-read' handling to qemuBlockStorageSourceChainData
Unify the handling of the copy-on-read filter by changing the handling to use qemuBlockStorageSourceChainData. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com> Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
parent
c63a3ba258
commit
9514f0fba0
@ -4288,7 +4288,6 @@ qemuDomainRemoveDiskDevice(virQEMUDriver *driver,
|
|||||||
virDomainDeviceDef dev;
|
virDomainDeviceDef dev;
|
||||||
size_t i;
|
size_t i;
|
||||||
qemuDomainObjPrivate *priv = vm->privateData;
|
qemuDomainObjPrivate *priv = vm->privateData;
|
||||||
g_autofree char *corAlias = NULL;
|
|
||||||
bool blockdev = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV);
|
bool blockdev = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV);
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
@ -4301,10 +4300,7 @@ qemuDomainRemoveDiskDevice(virQEMUDriver *driver,
|
|||||||
|
|
||||||
if (!(diskBackend = qemuBlockStorageSourceChainDetachPrepareChardev(chardevAlias)))
|
if (!(diskBackend = qemuBlockStorageSourceChainDetachPrepareChardev(chardevAlias)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
} else if (blockdev &&
|
} else if (blockdev && !qemuDiskBusIsSD(disk->bus)) {
|
||||||
!qemuDiskBusIsSD(disk->bus)) {
|
|
||||||
corAlias = g_strdup(diskPriv->nodeCopyOnRead);
|
|
||||||
|
|
||||||
if (diskPriv->blockjob) {
|
if (diskPriv->blockjob) {
|
||||||
/* the block job keeps reference to the disk chain */
|
/* the block job keeps reference to the disk chain */
|
||||||
diskPriv->blockjob->disk = NULL;
|
diskPriv->blockjob->disk = NULL;
|
||||||
@ -4314,6 +4310,13 @@ qemuDomainRemoveDiskDevice(virQEMUDriver *driver,
|
|||||||
if (!(diskBackend = qemuBlockStorageSourceChainDetachPrepareBlockdev(disk->src)))
|
if (!(diskBackend = qemuBlockStorageSourceChainDetachPrepareBlockdev(disk->src)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (diskPriv->nodeCopyOnRead) {
|
||||||
|
if (!diskBackend)
|
||||||
|
diskBackend = g_new0(qemuBlockStorageSourceChainData, 1);
|
||||||
|
diskBackend->copyOnReadNodename = g_strdup(diskPriv->nodeCopyOnRead);
|
||||||
|
diskBackend->copyOnReadAttached = true;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
char *driveAlias;
|
char *driveAlias;
|
||||||
|
|
||||||
@ -4333,9 +4336,6 @@ qemuDomainRemoveDiskDevice(virQEMUDriver *driver,
|
|||||||
|
|
||||||
qemuDomainObjEnterMonitor(driver, vm);
|
qemuDomainObjEnterMonitor(driver, vm);
|
||||||
|
|
||||||
if (corAlias)
|
|
||||||
ignore_value(qemuMonitorBlockdevDel(priv->mon, corAlias));
|
|
||||||
|
|
||||||
if (diskBackend)
|
if (diskBackend)
|
||||||
qemuBlockStorageSourceChainDetach(priv->mon, diskBackend);
|
qemuBlockStorageSourceChainDetach(priv->mon, diskBackend);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user