]> xenbits.xensource.com Git - libvirt.git/commitdiff
hostdev: Stop early if unmanaged devices have not been detached
authorAndrea Bolognani <abologna@redhat.com>
Fri, 4 Mar 2016 15:16:16 +0000 (16:16 +0100)
committerAndrea Bolognani <abologna@redhat.com>
Wed, 23 Mar 2016 09:58:18 +0000 (10:58 +0100)
Unmanaged devices, as the name suggests, are not detached
automatically from the host by libvirt before being attached to a
guest: it's the user's responsability to detach them manually
beforehand. If that preliminary step has not been performed, the
attach operation can't complete successfully.

Instead of relying on the lower layers to error out with cryptic
messages such as

  error: Failed to attach device from /tmp/hostdev.xml
  error: Path '/dev/vfio/12' is not accessible: No such file or directory

prevent the situation altogether and provide the user with a more
useful error message.

src/util/virhostdev.c

index e6b9c1ba9332860730d3ef3386c5a432322e7a3c..99e17f4b379a1b4002ff94581aef66080ed3c184 100644 (file)
@@ -619,6 +619,12 @@ virHostdevPreparePCIDevices(virHostdevManagerPtr mgr,
                           virPCIDeviceGetName(pci));
                 if (virPCIDeviceListAddCopy(mgr->inactivePCIHostdevs, pci) < 0)
                     goto reattachdevs;
+            } else {
+                virReportError(VIR_ERR_OPERATION_INVALID,
+                               _("Unmanaged PCI device %s must be manually "
+                               "detached from the host"),
+                               virPCIDeviceGetName(pci));
+                goto reattachdevs;
             }
         }
     }