[libvirt] [PATCH 4/5] util: introduce virPCIDeviceConfigOpenTry

Ján Tomko jtomko at redhat.com
Tue Aug 13 13:45:18 UTC 2019


For callers that only need read-only access and don't want
an error reported.

Signed-off-by: Ján Tomko <jtomko at redhat.com>
---
 src/util/virpci.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/util/virpci.c b/src/util/virpci.c
index e45dfbc631..2758ee6f49 100644
--- a/src/util/virpci.c
+++ b/src/util/virpci.c
@@ -320,6 +320,12 @@ virPCIDeviceConfigOpen(virPCIDevicePtr dev, bool fatal)
     return virPCIDeviceConfigOpenInternal(dev, false, fatal);
 }
 
+static int
+virPCIDeviceConfigOpenTry(virPCIDevicePtr dev)
+{
+    return virPCIDeviceConfigOpenInternal(dev, true, false);
+}
+
 static int
 virPCIDeviceConfigOpenWrite(virPCIDevicePtr dev)
 {
@@ -692,7 +698,7 @@ virPCIDeviceIsParent(virPCIDevicePtr dev, virPCIDevicePtr check, void *data)
     if (dev->address.domain != check->address.domain)
         return 0;
 
-    if ((fd = virPCIDeviceConfigOpen(check, false)) < 0)
+    if ((fd = virPCIDeviceConfigOpenTry(check)) < 0)
         return 0;
 
     /* Is it a bridge? */
@@ -740,7 +746,7 @@ virPCIDeviceIsParent(virPCIDevicePtr dev, virPCIDevicePtr check, void *data)
             int bestfd;
             uint8_t best_secondary;
 
-            if ((bestfd = virPCIDeviceConfigOpen(*best, false)) < 0)
+            if ((bestfd = virPCIDeviceConfigOpenTry(*best)) < 0)
                 goto cleanup;
             best_secondary = virPCIDeviceRead8(*best, bestfd, PCI_SECONDARY_BUS);
             virPCIDeviceConfigClose(*best, bestfd);
-- 
2.20.1




More information about the libvir-list mailing list