mirror of https://gitee.com/openkylin/libvirt.git
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,
|
||||
virDomainHostdevDefPtr hostdev)
|
||||
{
|
||||
size_t i;
|
||||
int ret = -1;
|
||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
virErrorPtr orig_err;
|
||||
virDomainControllerDefPtr cont = NULL;
|
||||
char *devstr = NULL;
|
||||
char *drvstr = NULL;
|
||||
bool teardowncgroup = false;
|
||||
|
@ -1881,9 +1881,17 @@ qemuDomainAttachHostSCSIDevice(virConnectPtr conn,
|
|||
return -1;
|
||||
}
|
||||
|
||||
cont = qemuDomainFindOrCreateSCSIDiskController(driver, vm, hostdev->info->addr.drive.controller);
|
||||
if (!cont)
|
||||
return -1;
|
||||
/* Let's make sure the disk has a controller defined and loaded before
|
||||
* trying to add it. The controller used by the disk must exist before a
|
||||
* 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,
|
||||
&hostdev, 1)) {
|
||||
|
|
Loading…
Reference in New Issue