mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
qemu: Reorder qemuDomainAttachUSBMassStorageDevice failure path
Modify the error/exit path to match what was done for Virtio and SCSI. If nothing else it'll have a consistent look'n'feel
This commit is contained in:
parent
f803f5ff34
commit
675a7e4ec1
@ -718,6 +718,7 @@ qemuDomainAttachUSBMassStorageDevice(virQEMUDriverPtr driver,
|
||||
int ret = -1;
|
||||
char *drivestr = NULL;
|
||||
char *devstr = NULL;
|
||||
bool driveAdded = false;
|
||||
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
||||
const char *src = virDomainDiskGetSource(disk);
|
||||
bool releaseaddr = false;
|
||||
@ -749,27 +750,21 @@ qemuDomainAttachUSBMassStorageDevice(virQEMUDriverPtr driver,
|
||||
goto error;
|
||||
|
||||
qemuDomainObjEnterMonitor(driver, vm);
|
||||
ret = qemuMonitorAddDrive(priv->mon, drivestr);
|
||||
if (ret == 0) {
|
||||
ret = qemuMonitorAddDevice(priv->mon, devstr);
|
||||
if (ret < 0) {
|
||||
VIR_WARN("qemuMonitorAddDevice failed on %s (%s)",
|
||||
drivestr, devstr);
|
||||
/* XXX should call 'drive_del' on error but this does not
|
||||
exist yet */
|
||||
}
|
||||
}
|
||||
if (qemuDomainObjExitMonitor(driver, vm) < 0) {
|
||||
ret = -1;
|
||||
goto error;
|
||||
}
|
||||
|
||||
virDomainAuditDisk(vm, NULL, disk->src, "attach", ret >= 0);
|
||||
if (qemuMonitorAddDrive(priv->mon, drivestr) < 0)
|
||||
goto exit_monitor;
|
||||
driveAdded = true;
|
||||
|
||||
if (ret < 0)
|
||||
if (qemuMonitorAddDevice(priv->mon, devstr) < 0)
|
||||
goto exit_monitor;
|
||||
|
||||
if (qemuDomainObjExitMonitor(driver, vm) < 0)
|
||||
goto error;
|
||||
|
||||
virDomainAuditDisk(vm, NULL, disk->src, "attach", true);
|
||||
|
||||
virDomainDiskInsertPreAlloced(vm->def, disk);
|
||||
ret = 0;
|
||||
|
||||
cleanup:
|
||||
if (ret < 0 && releaseaddr)
|
||||
@ -779,6 +774,17 @@ qemuDomainAttachUSBMassStorageDevice(virQEMUDriverPtr driver,
|
||||
virObjectUnref(cfg);
|
||||
return ret;
|
||||
|
||||
exit_monitor:
|
||||
if (driveAdded) {
|
||||
VIR_WARN("qemuMonitorAddDevice failed on %s (%s)",
|
||||
drivestr, devstr);
|
||||
/* XXX should call 'drive_del' on error but this does not
|
||||
exist yet */
|
||||
}
|
||||
|
||||
ignore_value(qemuDomainObjExitMonitor(driver, vm));
|
||||
virDomainAuditDisk(vm, NULL, disk->src, "attach", false);
|
||||
|
||||
error:
|
||||
ignore_value(qemuDomainPrepareDisk(driver, vm, disk, NULL, true));
|
||||
goto cleanup;
|
||||
|
Loading…
x
Reference in New Issue
Block a user