[libvirt] [PATCH 3/5] util: improve error reporting in virNetDevVPortProfileGetStatus
Michal Privoznik
mprivozn at redhat.com
Tue Dec 22 07:56:10 UTC 2015
On 21.12.2015 18:17, Laine Stump wrote:
> 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"));
error when printing error :)
> + 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",
>
ACK
Michal
More information about the libvir-list
mailing list