From dce9613ddab9d780ce9aabeb9a084ffec307899c Mon Sep 17 00:00:00 2001 Message-Id: From: Pavel Hrdina Date: Mon, 20 May 2019 10:12:55 +0200 Subject: [PATCH] util: skip RDMA detection for non-PCI network devices Only PCI devices have '/sys/class/net//device/resource' so we need to skip this check for all other network devices. Without this patch and RDMA enabled libvirt will not detect any network device that doesn't have the path above which includes 'lo', 'virbr', 'tun', etc. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1639258 Reviewed-by: Andrea Bolognani Signed-off-by: Pavel Hrdina (cherry picked from commit f38ef0fac0582ac0cbb749af9d3f8ba515a6084a) Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1693299 Signed-off-by: Pavel Hrdina Message-Id: <5d2c32fd3f2d7e3f9664d395c00cdfc942c738ce.1558339954.git.phrdina@redhat.com> Reviewed-by: Andrea Bolognani --- src/util/virnetdev.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c index b250af9e2c..9ca3ce69bc 100644 --- a/src/util/virnetdev.c +++ b/src/util/virnetdev.c @@ -3016,8 +3016,14 @@ virNetDevRDMAFeature(const char *ifname, if (virAsprintf(ð_devpath, SYSFS_NET_DIR "%s/device/resource", ifname) < 0) goto cleanup; - if (!virFileExists(eth_devpath)) + + /* If /sys/class/net//device/resource doesn't exist it is not a PCI + * device and therefore it will not have RDMA. */ + if (!virFileExists(eth_devpath)) { + ret = 0; goto cleanup; + } + if (virFileReadAll(eth_devpath, RESOURCE_FILE_LEN, ð_res_buf) < 0) goto cleanup; -- 2.22.0