mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
qemu: Add attempt to call qemuMonitorDriveDel for AttachSCSI failure path
Completion of fix for: https://bugzilla.redhat.com/show_bug.cgi?id=1336225 Similar to the other disk types, add the qemuMonitorDriveDel in the failure to add/hotplug a SCSI disk.
This commit is contained in:
parent
190e22c06b
commit
97ca6eed9a
@ -602,6 +602,7 @@ qemuDomainAttachSCSIDisk(virConnectPtr conn,
|
|||||||
char *devstr = NULL;
|
char *devstr = NULL;
|
||||||
bool driveAdded = false;
|
bool driveAdded = false;
|
||||||
bool encobjAdded = false;
|
bool encobjAdded = false;
|
||||||
|
char *drivealias = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
int rv;
|
int rv;
|
||||||
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
||||||
@ -649,6 +650,9 @@ qemuDomainAttachSCSIDisk(virConnectPtr conn,
|
|||||||
if (!(drivestr = qemuBuildDriveStr(disk, false, priv->qemuCaps)))
|
if (!(drivestr = qemuBuildDriveStr(disk, false, priv->qemuCaps)))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
if (!(drivealias = qemuAliasFromDisk(disk)))
|
||||||
|
goto error;
|
||||||
|
|
||||||
if (VIR_REALLOC_N(vm->def->disks, vm->def->ndisks+1) < 0)
|
if (VIR_REALLOC_N(vm->def->disks, vm->def->ndisks+1) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
@ -683,15 +687,16 @@ qemuDomainAttachSCSIDisk(virConnectPtr conn,
|
|||||||
qemuDomainSecretDiskDestroy(disk);
|
qemuDomainSecretDiskDestroy(disk);
|
||||||
VIR_FREE(devstr);
|
VIR_FREE(devstr);
|
||||||
VIR_FREE(drivestr);
|
VIR_FREE(drivestr);
|
||||||
|
VIR_FREE(drivealias);
|
||||||
virObjectUnref(cfg);
|
virObjectUnref(cfg);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
exit_monitor:
|
exit_monitor:
|
||||||
/* XXX should call 'drive_del' on error but this does not exist yet */
|
|
||||||
if (driveAdded)
|
|
||||||
VIR_WARN("qemuMonitorAddDevice failed on %s (%s)", drivestr, devstr);
|
|
||||||
|
|
||||||
orig_err = virSaveLastError();
|
orig_err = virSaveLastError();
|
||||||
|
if (driveAdded && qemuMonitorDriveDel(priv->mon, drivealias) < 0) {
|
||||||
|
VIR_WARN("Unable to remove drive %s (%s) after failed "
|
||||||
|
"qemuMonitorAddDevice", drivealias, drivestr);
|
||||||
|
}
|
||||||
if (encobjAdded)
|
if (encobjAdded)
|
||||||
ignore_value(qemuMonitorDelObject(priv->mon, encinfo->s.aes.alias));
|
ignore_value(qemuMonitorDelObject(priv->mon, encinfo->s.aes.alias));
|
||||||
if (orig_err) {
|
if (orig_err) {
|
||||||
|
Loading…
Reference in New Issue
Block a user