[libvirt] [PATCH] util: suppress unimportant ovs-vsctl errors when getting interface stats
Michal Privoznik
mprivozn at redhat.com
Thu Mar 28 08:34:32 UTC 2019
On 3/27/19 8:04 PM, Laine Stump wrote:
> commit edaf13565 modified the stats retrieval for OVS interfaces to
> not fail when one of the fields was unrecognized by the ovs-vsctl
> command, but ovs-vsctl was still returning an error, and libvirt was
> cluttering the logs with these inconsequential error messages.
>
> This patch modifies the GET_STAT macro to add "--if-exists" to the
> ovs-vsctl command, which causes it to return an empty string (and exit
> with success) if the requested statistic isn't in its database, thus
> eliminating the ugly error messages from the log.
>
> Resolves: https://bugzilla.redhat.com/1683175
>
> Signed-off-by: Laine Stump <laine at laine.org>
> ---
> src/util/virnetdevopenvswitch.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/src/util/virnetdevopenvswitch.c b/src/util/virnetdevopenvswitch.c
> index 4fa3a5742a..e5a45f59ec 100644
> --- a/src/util/virnetdevopenvswitch.c
> +++ b/src/util/virnetdevopenvswitch.c
> @@ -335,10 +335,10 @@ virNetDevOpenvswitchInterfaceStats(const char *ifname,
> virCommandFree(cmd); \
> cmd = virCommandNew(OVSVSCTL); \
> virNetDevOpenvswitchAddTimeout(cmd); \
> - virCommandAddArgList(cmd, "get", "Interface", ifname, \
> - "statistics:" name, NULL); \
> + virCommandAddArgList(cmd, "--if-exists", "get", "Interface", \
> + ifname, "statistics:" name, NULL); \
> virCommandSetOutputBuffer(cmd, &output); \
> - if (virCommandRun(cmd, NULL) < 0) { \
> + if (virCommandRun(cmd, NULL) < 0 || !*output || *output == '\n') { \
I think we need '|| !output' before any of these @output checks. If
virCommandRun() fails before it had a chance to allocate @output this
would case NULL dereference.
> stats->member = -1; \
> } else { \
> if (virStrToLong_ll(output, &tmp, 10, &stats->member) < 0 || \
>
ACK
Michal
More information about the libvir-list
mailing list