mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
qemu: hotplug: Replace qemuDomainDiskNeedRemovePR
The function can be replaced by much simpler logic. Signed-off-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
parent
8bebb2b735
commit
9b3cbd33a7
@ -3826,42 +3826,6 @@ static bool qemuIsMultiFunctionDevice(virDomainDefPtr def,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
qemuDomainDiskNeedRemovePR(virDomainObjPtr vm,
|
|
||||||
virDomainDiskDefPtr disk,
|
|
||||||
bool *stopDaemon)
|
|
||||||
{
|
|
||||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
*stopDaemon = false;
|
|
||||||
|
|
||||||
if (!disk->src->pr)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (!virStoragePRDefIsManaged(disk->src->pr))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
for (i = 0; i < vm->def->ndisks; i++) {
|
|
||||||
const virDomainDiskDef *domainDisk = vm->def->disks[i];
|
|
||||||
|
|
||||||
if (domainDisk == disk)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (virStoragePRDefIsManaged(domainDisk->src->pr))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i != vm->def->ndisks)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (priv->prDaemonRunning)
|
|
||||||
*stopDaemon = true;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
qemuDomainRemoveDiskDevice(virQEMUDriverPtr driver,
|
qemuDomainRemoveDiskDevice(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr vm,
|
virDomainObjPtr vm,
|
||||||
@ -3875,7 +3839,6 @@ qemuDomainRemoveDiskDevice(virQEMUDriverPtr driver,
|
|||||||
char *drivestr;
|
char *drivestr;
|
||||||
char *objAlias = NULL;
|
char *objAlias = NULL;
|
||||||
char *encAlias = NULL;
|
char *encAlias = NULL;
|
||||||
bool stopPRDaemon = false;
|
|
||||||
|
|
||||||
VIR_DEBUG("Removing disk %s from domain %p %s",
|
VIR_DEBUG("Removing disk %s from domain %p %s",
|
||||||
disk->info.alias, vm, vm->def->name);
|
disk->info.alias, vm, vm->def->name);
|
||||||
@ -3913,9 +3876,6 @@ qemuDomainRemoveDiskDevice(virQEMUDriverPtr driver,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qemuDomainDiskNeedRemovePR(vm, disk, &stopPRDaemon) < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
qemuDomainObjEnterMonitor(driver, vm);
|
qemuDomainObjEnterMonitor(driver, vm);
|
||||||
|
|
||||||
qemuMonitorDriveDel(priv->mon, drivestr);
|
qemuMonitorDriveDel(priv->mon, drivestr);
|
||||||
@ -3953,7 +3913,9 @@ qemuDomainRemoveDiskDevice(virQEMUDriverPtr driver,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stopPRDaemon)
|
/* check if the last disk with managed PR was just removed */
|
||||||
|
if (priv->prDaemonRunning &&
|
||||||
|
!virDomainDefHasManagedPR(vm->def))
|
||||||
qemuProcessKillManagedPRDaemon(vm);
|
qemuProcessKillManagedPRDaemon(vm);
|
||||||
|
|
||||||
qemuDomainReleaseDeviceAddress(vm, &disk->info, src);
|
qemuDomainReleaseDeviceAddress(vm, &disk->info, src);
|
||||||
|
Loading…
Reference in New Issue
Block a user