]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Use the hostdev alias in qemuDomainAttachHostSCSIDevice error path
authorJohn Ferlan <jferlan@redhat.com>
Mon, 18 Jul 2016 17:24:27 +0000 (13:24 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Tue, 2 Aug 2016 14:11:11 +0000 (10:11 -0400)
https://bugzilla.redhat.com/show_bug.cgi?id=1289391

Rather than pass the whole drive string (which contained the alias),
pass only the alias for the qemuMonitorDriveDel call in the error
path when adding a host device in the monitor fails.

src/qemu/qemu_hotplug.c

index 5aa9e5c3b93208e696a29d70ea2593ed337e94fe..00e4a75ba8ad519a98d78bdb4fff4ac32668dd6c 100644 (file)
@@ -2045,6 +2045,7 @@ qemuDomainAttachHostSCSIDevice(virConnectPtr conn,
     virErrorPtr orig_err;
     char *devstr = NULL;
     char *drvstr = NULL;
+    char *drivealias = NULL;
     bool teardowncgroup = false;
     bool teardownlabel = false;
     bool driveAdded = false;
@@ -2103,6 +2104,9 @@ qemuDomainAttachHostSCSIDevice(virConnectPtr conn,
     if (!(drvstr = qemuBuildSCSIHostdevDrvStr(hostdev)))
         goto cleanup;
 
+    if (!(drivealias = qemuAliasFromHostdev(hostdev)))
+        goto cleanup;
+
     if (!(devstr = qemuBuildSCSIHostdevDevStr(vm->def, hostdev, priv->qemuCaps)))
         goto cleanup;
 
@@ -2138,13 +2142,14 @@ qemuDomainAttachHostSCSIDevice(virConnectPtr conn,
                                                   vm->def, hostdev, NULL) < 0)
             VIR_WARN("Unable to restore host device labelling on hotplug fail");
     }
+    VIR_FREE(drivealias);
     VIR_FREE(drvstr);
     VIR_FREE(devstr);
     return ret;
 
  exit_monitor:
     orig_err = virSaveLastError();
-    if (driveAdded && qemuMonitorDriveDel(priv->mon, drvstr) < 0) {
+    if (driveAdded && qemuMonitorDriveDel(priv->mon, drivealias) < 0) {
         VIR_WARN("Unable to remove drive %s (%s) after failed "
                  "qemuMonitorAddDevice",
                  drvstr, devstr);