mirror of https://gitee.com/openkylin/libvirt.git
qemu: Move qemuDomainDetachDeviceDiskLive to qemu_hotplug.c
This commit is contained in:
parent
7a5d85f9b1
commit
4e6b05f5b6
|
@ -6362,58 +6362,6 @@ qemuDomainAttachDeviceLive(virDomainObjPtr vm,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
qemuFindDisk(virDomainDefPtr def, const char *dst)
|
|
||||||
{
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
for (i = 0; i < def->ndisks; i++) {
|
|
||||||
if (STREQ(def->disks[i]->dst, dst)) {
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
qemuDomainDetachDeviceDiskLive(virQEMUDriverPtr driver,
|
|
||||||
virDomainObjPtr vm,
|
|
||||||
virDomainDeviceDefPtr dev)
|
|
||||||
{
|
|
||||||
virDomainDiskDefPtr disk;
|
|
||||||
int ret = -1;
|
|
||||||
int idx;
|
|
||||||
|
|
||||||
if ((idx = qemuFindDisk(vm->def, dev->data.disk->dst)) < 0) {
|
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED,
|
|
||||||
_("disk %s not found"), dev->data.disk->dst);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
disk = vm->def->disks[idx];
|
|
||||||
|
|
||||||
switch (disk->device) {
|
|
||||||
case VIR_DOMAIN_DISK_DEVICE_DISK:
|
|
||||||
case VIR_DOMAIN_DISK_DEVICE_LUN:
|
|
||||||
if (disk->bus == VIR_DOMAIN_DISK_BUS_VIRTIO)
|
|
||||||
ret = qemuDomainDetachVirtioDiskDevice(driver, vm, disk);
|
|
||||||
else if (disk->bus == VIR_DOMAIN_DISK_BUS_SCSI ||
|
|
||||||
disk->bus == VIR_DOMAIN_DISK_BUS_USB)
|
|
||||||
ret = qemuDomainDetachDiskDevice(driver, vm, disk);
|
|
||||||
else
|
|
||||||
virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
|
|
||||||
_("This type of disk cannot be hot unplugged"));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
virReportError(VIR_ERR_OPERATION_UNSUPPORTED,
|
|
||||||
_("disk device type '%s' cannot be detached"),
|
|
||||||
virDomainDiskDeviceTypeToString(disk->device));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
qemuDomainDetachDeviceControllerLive(virQEMUDriverPtr driver,
|
qemuDomainDetachDeviceControllerLive(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr vm,
|
virDomainObjPtr vm,
|
||||||
|
|
|
@ -2752,9 +2752,10 @@ qemuDomainSignalDeviceRemoval(virDomainObjPtr vm,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int qemuDomainDetachVirtioDiskDevice(virQEMUDriverPtr driver,
|
static int
|
||||||
virDomainObjPtr vm,
|
qemuDomainDetachVirtioDiskDevice(virQEMUDriverPtr driver,
|
||||||
virDomainDiskDefPtr detach)
|
virDomainObjPtr vm,
|
||||||
|
virDomainDiskDefPtr detach)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||||
|
@ -2823,9 +2824,10 @@ cleanup:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int qemuDomainDetachDiskDevice(virQEMUDriverPtr driver,
|
static int
|
||||||
virDomainObjPtr vm,
|
qemuDomainDetachDiskDevice(virQEMUDriverPtr driver,
|
||||||
virDomainDiskDefPtr detach)
|
virDomainObjPtr vm,
|
||||||
|
virDomainDiskDefPtr detach)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||||
|
@ -2875,6 +2877,59 @@ cleanup:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
qemuFindDisk(virDomainDefPtr def, const char *dst)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < def->ndisks; i++) {
|
||||||
|
if (STREQ(def->disks[i]->dst, dst)) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
qemuDomainDetachDeviceDiskLive(virQEMUDriverPtr driver,
|
||||||
|
virDomainObjPtr vm,
|
||||||
|
virDomainDeviceDefPtr dev)
|
||||||
|
{
|
||||||
|
virDomainDiskDefPtr disk;
|
||||||
|
int ret = -1;
|
||||||
|
int idx;
|
||||||
|
|
||||||
|
if ((idx = qemuFindDisk(vm->def, dev->data.disk->dst)) < 0) {
|
||||||
|
virReportError(VIR_ERR_OPERATION_FAILED,
|
||||||
|
_("disk %s not found"), dev->data.disk->dst);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
disk = vm->def->disks[idx];
|
||||||
|
|
||||||
|
switch (disk->device) {
|
||||||
|
case VIR_DOMAIN_DISK_DEVICE_DISK:
|
||||||
|
case VIR_DOMAIN_DISK_DEVICE_LUN:
|
||||||
|
if (disk->bus == VIR_DOMAIN_DISK_BUS_VIRTIO)
|
||||||
|
ret = qemuDomainDetachVirtioDiskDevice(driver, vm, disk);
|
||||||
|
else if (disk->bus == VIR_DOMAIN_DISK_BUS_SCSI ||
|
||||||
|
disk->bus == VIR_DOMAIN_DISK_BUS_USB)
|
||||||
|
ret = qemuDomainDetachDiskDevice(driver, vm, disk);
|
||||||
|
else
|
||||||
|
virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
|
||||||
|
_("This type of disk cannot be hot unplugged"));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
virReportError(VIR_ERR_OPERATION_UNSUPPORTED,
|
||||||
|
_("disk device type '%s' cannot be detached"),
|
||||||
|
virDomainDiskDeviceTypeToString(disk->device));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static bool qemuDomainDiskControllerIsBusy(virDomainObjPtr vm,
|
static bool qemuDomainDiskControllerIsBusy(virDomainObjPtr vm,
|
||||||
virDomainControllerDefPtr detach)
|
virDomainControllerDefPtr detach)
|
||||||
{
|
{
|
||||||
|
|
|
@ -75,12 +75,9 @@ int qemuDomainChangeNetLinkState(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr vm,
|
virDomainObjPtr vm,
|
||||||
virDomainNetDefPtr dev,
|
virDomainNetDefPtr dev,
|
||||||
int linkstate);
|
int linkstate);
|
||||||
int qemuDomainDetachVirtioDiskDevice(virQEMUDriverPtr driver,
|
int qemuDomainDetachDeviceDiskLive(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr vm,
|
virDomainObjPtr vm,
|
||||||
virDomainDiskDefPtr disk);
|
virDomainDeviceDefPtr dev);
|
||||||
int qemuDomainDetachDiskDevice(virQEMUDriverPtr driver,
|
|
||||||
virDomainObjPtr vm,
|
|
||||||
virDomainDiskDefPtr disk);
|
|
||||||
int qemuDomainDetachPciControllerDevice(virQEMUDriverPtr driver,
|
int qemuDomainDetachPciControllerDevice(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr vm,
|
virDomainObjPtr vm,
|
||||||
virDomainDeviceDefPtr dev);
|
virDomainDeviceDefPtr dev);
|
||||||
|
|
Loading…
Reference in New Issue