mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-04 00:58:38 +03:00
qemu: hotplug: Extract common code to qemuDomainAttachDeviceDiskLive
Target uniqueness check was duplicated in all of the three workers called from it. Extract it to the parent.
This commit is contained in:
parent
43d9a14a21
commit
9e92a0b4c0
@ -315,7 +315,6 @@ qemuDomainAttachVirtioDiskDevice(virConnectPtr conn,
|
|||||||
virDomainObjPtr vm,
|
virDomainObjPtr vm,
|
||||||
virDomainDiskDefPtr disk)
|
virDomainDiskDefPtr disk)
|
||||||
{
|
{
|
||||||
size_t i;
|
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
const char* type = virDomainDiskBusTypeToString(disk->bus);
|
const char* type = virDomainDiskBusTypeToString(disk->bus);
|
||||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||||
@ -338,14 +337,6 @@ qemuDomainAttachVirtioDiskDevice(virConnectPtr conn,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < vm->def->ndisks; i++) {
|
|
||||||
if (STREQ(vm->def->disks[i]->dst, disk->dst)) {
|
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED,
|
|
||||||
_("target %s already exists"), disk->dst);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (qemuDomainPrepareDisk(driver, vm, disk, NULL, false) < 0)
|
if (qemuDomainPrepareDisk(driver, vm, disk, NULL, false) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
@ -577,14 +568,6 @@ qemuDomainAttachSCSIDisk(virConnectPtr conn,
|
|||||||
int ret = -1;
|
int ret = -1;
|
||||||
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
||||||
|
|
||||||
for (i = 0; i < vm->def->ndisks; i++) {
|
|
||||||
if (STREQ(vm->def->disks[i]->dst, disk->dst)) {
|
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED,
|
|
||||||
_("target %s already exists"), disk->dst);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (qemuDomainPrepareDisk(driver, vm, disk, NULL, false) < 0)
|
if (qemuDomainPrepareDisk(driver, vm, disk, NULL, false) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
@ -688,21 +671,12 @@ qemuDomainAttachUSBMassStorageDevice(virConnectPtr conn,
|
|||||||
virDomainDiskDefPtr disk)
|
virDomainDiskDefPtr disk)
|
||||||
{
|
{
|
||||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||||
size_t i;
|
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
char *drivestr = NULL;
|
char *drivestr = NULL;
|
||||||
char *devstr = NULL;
|
char *devstr = NULL;
|
||||||
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
||||||
const char *src = virDomainDiskGetSource(disk);
|
const char *src = virDomainDiskGetSource(disk);
|
||||||
|
|
||||||
for (i = 0; i < vm->def->ndisks; i++) {
|
|
||||||
if (STREQ(vm->def->disks[i]->dst, disk->dst)) {
|
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED,
|
|
||||||
_("target %s already exists"), disk->dst);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (qemuDomainPrepareDisk(driver, vm, disk, NULL, false) < 0)
|
if (qemuDomainPrepareDisk(driver, vm, disk, NULL, false) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
@ -770,6 +744,7 @@ qemuDomainAttachDeviceDiskLive(virConnectPtr conn,
|
|||||||
virDomainObjPtr vm,
|
virDomainObjPtr vm,
|
||||||
virDomainDeviceDefPtr dev)
|
virDomainDeviceDefPtr dev)
|
||||||
{
|
{
|
||||||
|
size_t i;
|
||||||
virDomainDiskDefPtr disk = dev->data.disk;
|
virDomainDiskDefPtr disk = dev->data.disk;
|
||||||
virDomainDiskDefPtr orig_disk = NULL;
|
virDomainDiskDefPtr orig_disk = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
@ -818,6 +793,14 @@ qemuDomainAttachDeviceDiskLive(virConnectPtr conn,
|
|||||||
|
|
||||||
case VIR_DOMAIN_DISK_DEVICE_DISK:
|
case VIR_DOMAIN_DISK_DEVICE_DISK:
|
||||||
case VIR_DOMAIN_DISK_DEVICE_LUN:
|
case VIR_DOMAIN_DISK_DEVICE_LUN:
|
||||||
|
for (i = 0; i < vm->def->ndisks; i++) {
|
||||||
|
if (STREQ(vm->def->disks[i]->dst, disk->dst)) {
|
||||||
|
virReportError(VIR_ERR_OPERATION_FAILED,
|
||||||
|
_("target %s already exists"), disk->dst);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch ((virDomainDiskBus) disk->bus) {
|
switch ((virDomainDiskBus) disk->bus) {
|
||||||
case VIR_DOMAIN_DISK_BUS_USB:
|
case VIR_DOMAIN_DISK_BUS_USB:
|
||||||
if (disk->device == VIR_DOMAIN_DISK_DEVICE_LUN) {
|
if (disk->device == VIR_DOMAIN_DISK_DEVICE_LUN) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user