[libvirt] [PATCH] utils: Remove the logging of errors from virNetDevSendEthtoolIoctl
Martin Kletzander
mkletzan at redhat.com
Mon Aug 17 17:30:18 UTC 2015
On Sat, Aug 15, 2015 at 12:04:04PM +0300, Moshe Levi wrote:
>This patch remove the logging of errors of ioctl api and instead
>let the caller to choose what errors to log
>---
> src/util/virnetdev.c | 44 +++++++++++++-------------------------------
> 1 files changed, 13 insertions(+), 31 deletions(-)
>
>diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c
>index 2f3690e..cf79e8d 100644
>--- a/src/util/virnetdev.c
>+++ b/src/util/virnetdev.c
>@@ -3032,11 +3032,10 @@ static int
> virNetDevSendEthtoolIoctl(const char *ifname, void *cmd)
> {
> int ret = -1;
>- int sock = -1;
>+ int sock;
> virIfreq ifr;
>
>- sock = socket(AF_LOCAL, SOCK_DGRAM, 0);
>- if (sock < 0) {
>+ if ((sock = socket(AF_LOCAL, SOCK_DGRAM, 0)) < 0) {
> virReportSystemError(errno, "%s", _("Cannot open control socket"));
> goto cleanup;
Here you still report error from this function.
> }
>@@ -3045,26 +3044,9 @@ virNetDevSendEthtoolIoctl(const char *ifname, void *cmd)
> strcpy(ifr.ifr_name, ifname);
> ifr.ifr_data = cmd;
> ret = ioctl(sock, SIOCETHTOOL, &ifr);
>- if (ret != 0) {
>- switch (errno) {
>- case EPERM:
>- VIR_DEBUG("ethtool ioctl: permission denied");
>- break;
>- case EINVAL:
>- VIR_DEBUG("ethtool ioctl: invalid request");
>- break;
>- case EOPNOTSUPP:
>- VIR_DEBUG("ethtool ioctl: request not supported");
>- break;
>- default:
>- virReportSystemError(errno, "%s", _("ethtool ioctl error"));
>- goto cleanup;
>- }
>- }
>
> cleanup:
>- if (sock)
>- VIR_FORCE_CLOSE(sock);
>+ VIR_FORCE_CLOSE(sock);
> return ret;
> }
>
>@@ -3081,12 +3063,12 @@ virNetDevSendEthtoolIoctl(const char *ifname, void *cmd)
> static int
> virNetDevFeatureAvailable(const char *ifname, struct ethtool_value *cmd)
> {
>- int ret = -1;
>-
> cmd = (void*)cmd;
>- if (!virNetDevSendEthtoolIoctl(ifname, cmd))
>- ret = cmd->data > 0 ? 1 : 0;
>- return ret;
>+ if (virNetDevSendEthtoolIoctl(ifname, cmd) < 0) {
>+ virReportSystemError(errno, _("Cannot get device %s flags"), ifname);
>+ return -1;
>+ }
>+ return cmd->data > 0 ? 1 : 0;
> }
>
>
>@@ -3103,12 +3085,12 @@ virNetDevFeatureAvailable(const char *ifname, struct ethtool_value *cmd)
> static int
> virNetDevGFeatureAvailable(const char *ifname, struct ethtool_gfeatures *cmd)
> {
>- int ret = -1;
>-
> cmd = (void*)cmd;
>- if (!virNetDevSendEthtoolIoctl(ifname, cmd))
>- ret = FEATURE_BIT_IS_SET(cmd->features, TX_UDP_TNL, active);
>- return ret;
>+ if (virNetDevSendEthtoolIoctl(ifname, cmd) < 0) {
>+ virReportSystemError(errno, _("Cannot get device %s generic features"), ifname);
>+ return -1;
And here and above you rewrite it. I suggest just using
virReportError in the virNetDevSendEthtoolIoctl() function based on
what happened and don't rewrite it in callers.
>+ }
>+ return FEATURE_BIT_IS_SET(cmd->features, TX_UDP_TNL, active);
> }
> # endif
>
>--
>1.7.1
>
>--
>libvir-list mailing list
>libvir-list at redhat.com
>https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150817/5fb226bb/attachment-0001.sig>
More information about the libvir-list
mailing list