mirror of https://gitee.com/openkylin/libvirt.git
qemu: hot-plug: Fix broken SCSI disk hot-plug
The commit "qemu: hot-plug: Assume support for -device in
qemuDomainAttachSCSIDisk" dropped the code for the automatic SCSI
controller creation used in SCSI disk hot-plugging. If we are
hot-plugging a SCSI disk to a domain and there is no proper SCSI
controller defined, it results in an "error: internal error: Could not
find scsi controller with index X required for device" error.
For that reason reverting a hunk of the commit
d4d32005d6
.
This patch also adds an extra comment to the code to clarify the
loop.
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
bb848feec0
commit
58d07db9b0
|
@ -544,6 +544,7 @@ qemuDomainAttachSCSIDisk(virConnectPtr conn,
|
||||||
virDomainObjPtr vm,
|
virDomainObjPtr vm,
|
||||||
virDomainDiskDefPtr disk)
|
virDomainDiskDefPtr disk)
|
||||||
{
|
{
|
||||||
|
size_t i;
|
||||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||||
char *drivestr = NULL;
|
char *drivestr = NULL;
|
||||||
char *devstr = NULL;
|
char *devstr = NULL;
|
||||||
|
@ -561,6 +562,18 @@ qemuDomainAttachSCSIDisk(virConnectPtr conn,
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 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 <= disk->info.addr.drive.controller; i++) {
|
||||||
|
if (!qemuDomainFindOrCreateSCSIDiskController(driver, vm, i))
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
if (qemuAssignDeviceDiskAlias(vm->def, disk, priv->qemuCaps) < 0)
|
if (qemuAssignDeviceDiskAlias(vm->def, disk, priv->qemuCaps) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue