On Thu, Apr 14, 2022 at 2:01 AM Andrew Deason <adeason@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 <adeason@sinenomine.net>
>
Reviewed-by: Marc-André Lureau <marcandre.lureau@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