On Thu, Apr 14, 2022 at 2:01 AM Andrew Deason <adea...@sinenomine.net> wrote:
> guest_get_network_stats can silently fail in a couple of ways. Add > debug messages to these cases, so we're never completely silent on > failure. > > Signed-off-by: Andrew Deason <adea...@sinenomine.net> > Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> > --- > Changes since v1: > - new in v2 > > qga/commands-posix.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/qga/commands-posix.c b/qga/commands-posix.c > index c0b00fc488..97e001e998 100644 > --- a/qga/commands-posix.c > +++ b/qga/commands-posix.c > @@ -2789,20 +2789,22 @@ static int guest_get_network_stats(const char > *name, > GuestNetworkInterfaceStat *stats) > { > #ifdef CONFIG_LINUX > int name_len; > char const *devinfo = "/proc/net/dev"; > FILE *fp; > char *line = NULL, *colon; > size_t n = 0; > fp = fopen(devinfo, "r"); > if (!fp) { > + g_debug("failed to open network stats %s: %s", devinfo, > + g_strerror(errno)); > return -1; > } > name_len = strlen(name); > while (getline(&line, &n, fp) != -1) { > long long dummy; > long long rx_bytes; > long long rx_packets; > long long rx_errs; > long long rx_dropped; > long long tx_bytes; > @@ -2837,21 +2839,23 @@ static int guest_get_network_stats(const char > *name, > stats->tx_errs = tx_errs; > stats->tx_dropped = tx_dropped; > fclose(fp); > g_free(line); > return 0; > } > } > fclose(fp); > g_free(line); > g_debug("/proc/net/dev: Interface '%s' not found", name); > -#endif /* CONFIG_LINUX */ > +#else /* !CONFIG_LINUX */ > + g_debug("Network stats reporting available only for Linux"); > +#endif /* !CONFIG_LINUX */ > return -1; > } > > /* > * Build information about guest interfaces > */ > GuestNetworkInterfaceList *qmp_guest_network_get_interfaces(Error **errp) > { > GuestNetworkInterfaceList *head = NULL, **tail = &head; > struct ifaddrs *ifap, *ifa; > -- > 2.11.0 > > > -- Marc-André Lureau