mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-23 21:15:20 +00:00
qemu: Auto-generate controller for hotplugged hostdev
If a SCSI hostdev is included in an initial domain XML, without a corresponding controller statement, one is created silently when the guest is booted. When hotplugging a SCSI hostdev, a presumption is that the controller is already present in the domain either from the original XML, or via an earlier hotplug. [root@xxxxxxxx ~]# cat disk.xml <hostdev mode='subsystem' type='scsi'> <source> <adapter name='scsi_host0'/> <address bus='0' target='3' unit='1088438288'/> </source> </hostdev> [root@xxxxxxxx ~]# virsh attach-device guest01 disk.xml error: Failed to attach device from disk.xml error: internal error: unable to execute QEMU command 'device_add': Bus 'scsi0.0' not found Since the infrastructure is in place, we can also create a controller silently for use by the hotplugged hostdev device. Signed-off-by: Eric Farman <farman@linux.vnet.ibm.com>
This commit is contained in:
parent
6f22f95f77
commit
881eb78064
@ -1509,6 +1509,7 @@ qemuDomainAttachHostScsiDevice(virQEMUDriverPtr driver,
|
||||
{
|
||||
int ret = -1;
|
||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
virDomainControllerDefPtr cont = NULL;
|
||||
char *devstr = NULL;
|
||||
char *drvstr = NULL;
|
||||
bool teardowncgroup = false;
|
||||
@ -1521,6 +1522,10 @@ qemuDomainAttachHostScsiDevice(virQEMUDriverPtr driver,
|
||||
return -1;
|
||||
}
|
||||
|
||||
cont = qemuDomainFindOrCreateSCSIDiskController(driver, vm, hostdev->info->addr.drive.controller);
|
||||
if (!cont)
|
||||
return -1;
|
||||
|
||||
if (qemuPrepareHostdevSCSIDevices(driver, vm->def->name,
|
||||
&hostdev, 1)) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
|
Loading…
x
Reference in New Issue
Block a user