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