mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
qemu: SCSI hostdev hot-plug: Fix automatic creation of SCSI controllers
Ensure that the given controller and all controllers with a smaller index exist; there must not be any missing index in between. Reviewed-by: Boris Fiuczynski <fiuczy@linux.vnet.ibm.com> Reviewed-by: Bjoern Walk <bwalk@linux.vnet.ibm.com> Signed-off-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com>
This commit is contained in:
parent
58d07db9b0
commit
12ec22b68b
@ -1866,10 +1866,10 @@ qemuDomainAttachHostSCSIDevice(virConnectPtr conn,
|
|||||||
virDomainObjPtr vm,
|
virDomainObjPtr vm,
|
||||||
virDomainHostdevDefPtr hostdev)
|
virDomainHostdevDefPtr hostdev)
|
||||||
{
|
{
|
||||||
|
size_t i;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||||
virErrorPtr orig_err;
|
virErrorPtr orig_err;
|
||||||
virDomainControllerDefPtr cont = NULL;
|
|
||||||
char *devstr = NULL;
|
char *devstr = NULL;
|
||||||
char *drvstr = NULL;
|
char *drvstr = NULL;
|
||||||
bool teardowncgroup = false;
|
bool teardowncgroup = false;
|
||||||
@ -1881,9 +1881,17 @@ qemuDomainAttachHostSCSIDevice(virConnectPtr conn,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cont = qemuDomainFindOrCreateSCSIDiskController(driver, vm, hostdev->info->addr.drive.controller);
|
/* Let's make sure the disk has a controller defined and loaded before
|
||||||
if (!cont)
|
* trying to add it. The controller used by the disk must exist before a
|
||||||
return -1;
|
* qemu command line string is generated.
|
||||||
|
*
|
||||||
|
* Ensure that the given controller and all controllers with a smaller index
|
||||||
|
* exist; there must not be any missing index in between.
|
||||||
|
*/
|
||||||
|
for (i = 0; i <= hostdev->info->addr.drive.controller; i++) {
|
||||||
|
if (!qemuDomainFindOrCreateSCSIDiskController(driver, vm, i))
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (qemuHostdevPrepareSCSIDevices(driver, vm->def->name,
|
if (qemuHostdevPrepareSCSIDevices(driver, vm->def->name,
|
||||||
&hostdev, 1)) {
|
&hostdev, 1)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user