[PATCH 3/5] util: improve error reporting in virNetDevVPortProfileGetStatus

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The previous error message just indicated that the desired response
couldn't be found, this patch tells what was desired, as well as
listing out the entire table that had been in the netlink response, to
give some kind of idea why it failed.
---
 src/util/virnetdevvportprofile.c | 39 +++++++++++++++++++++++++++++++++++----
 1 file changed, 35 insertions(+), 4 deletions(-)

diff --git a/src/util/virnetdevvportprofile.c b/src/util/virnetdevvportprofile.c
index 427c67b..f4b876f 100644
--- a/src/util/virnetdevvportprofile.c
+++ b/src/util/virnetdevvportprofile.c
@@ -566,10 +566,41 @@ virNetDevVPortProfileGetStatus(struct nlattr **tb, int32_t vf,
             }
 
             if (!found) {
-                virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                               _("Could not find netlink response with "
-                                 "expected parameters"));
-                goto cleanup;
+                char instanceIdStr[VIR_UUID_STRING_BUFLEN] = "(none)";
+
+                if (instanceId)
+                   virUUIDFormat(instanceId, instanceIdStr);
+
+                virReportError(VIR_ERR_INTERNAL_ERROR,
+                               _("Could not find vf/instanceId %u/%s "
+                                 " in netlink response"),
+                               vf, instanceIdStr);
+
+                /* go through all the entries again. This seems tedious,
+                 * but experience has shown the resulting log to be
+                 * very useful.
+                 */
+                VIR_WARN("IFLA_VF_PORTS entries that were returned:");
+                nla_for_each_nested(tb_vf_ports, tb[IFLA_VF_PORTS], rem) {
+                    char uuidstr[VIR_UUID_STRING_BUFLEN] = "(none)";
+
+                    if (nla_parse_nested(tb_port, IFLA_PORT_MAX, tb_vf_ports,
+                                         ifla_port_policy)) {
+                        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                                       _("error parsing IFLA_VF_PORT "
+                                         "during error reporting"));
+                        goto cleanup;
+                    }
+                    if (tb_port[IFLA_PORT_INSTANCE_UUID]) {
+                        virUUIDFormat((unsigned char *)
+                                      RTA_DATA(tb_port[IFLA_PORT_INSTANCE_UUID]),
+                                      uuidstr);
+                    }
+                    VIR_WARN("  vf: %d uuid: %s",
+                             tb_port[IFLA_PORT_VF] ?
+                             *(uint32_t *)RTA_DATA(tb_port[IFLA_PORT_VF]) : -1,
+                             uuidstr);
+                }                goto cleanup;
             }
         } else {
             virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-- 
2.5.0

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]