[PATCH 2/2] virnetdevtap: Add better error message for a possible common user error

Martin Kletzander posted 2 patches 10 months, 2 weeks ago
[PATCH 2/2] virnetdevtap: Add better error message for a possible common user error
Posted by Martin Kletzander 10 months, 2 weeks ago
When users pre-create a tap device to use with multiqueue interface that
has `managed="no"`, change the error so that it does not indicate we are
trying to create the device, and on top of that hint at the most
probable error cause.

Resolves: https://issues.redhat.com/browse/RHEL-55749
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
---
 src/util/virnetdevtap.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/util/virnetdevtap.c b/src/util/virnetdevtap.c
index 55536b5f4be2..3df4dc129f0c 100644
--- a/src/util/virnetdevtap.c
+++ b/src/util/virnetdevtap.c
@@ -230,9 +230,16 @@ int virNetDevTapCreate(char **ifname,
         }
 
         if (ioctl(fd, TUNSETIFF, &ifr) < 0) {
-            virReportSystemError(errno,
-                                 _("Unable to create tap device %1$s"),
-                                 *ifname);
+            if (flags & VIR_NETDEV_TAP_CREATE_ALLOW_EXISTING &&
+                tapfdSize > 0) {
+                virReportSystemError(errno,
+                                     _("Unable to create multiple fds for tap device %1$s (maybe existing device was created without multi_queue flag)"),
+                                     *ifname);
+            } else {
+                virReportSystemError(errno,
+                                     _("Unable to create tap device %1$s"),
+                                     *ifname);
+            }
             goto cleanup;
         }
 
@@ -247,7 +254,7 @@ int virNetDevTapCreate(char **ifname,
             ioctl(fd, TUNSETPERSIST, 1) < 0) {
             virReportSystemError(errno,
                                  _("Unable to set tap device %1$s to persistent"),
-                                 *ifname);
+                                 NULLSTR(*ifname));
             goto cleanup;
         }
         tapfd[i] = fd;
-- 
2.46.0
Re: [PATCH 2/2] virnetdevtap: Add better error message for a possible common user error
Posted by Michal Prívozník 10 months, 2 weeks ago
On 9/4/24 10:39, Martin Kletzander wrote:
> When users pre-create a tap device to use with multiqueue interface that
> has `managed="no"`, change the error so that it does not indicate we are
> trying to create the device, and on top of that hint at the most
> probable error cause.
> 
> Resolves: https://issues.redhat.com/browse/RHEL-55749
> Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
> ---
>  src/util/virnetdevtap.c | 15 +++++++++++----
>  1 file changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/src/util/virnetdevtap.c b/src/util/virnetdevtap.c
> index 55536b5f4be2..3df4dc129f0c 100644
> --- a/src/util/virnetdevtap.c
> +++ b/src/util/virnetdevtap.c

> @@ -247,7 +254,7 @@ int virNetDevTapCreate(char **ifname,
>              ioctl(fd, TUNSETPERSIST, 1) < 0) {
>              virReportSystemError(errno,
>                                   _("Unable to set tap device %1$s to persistent"),
> -                                 *ifname);
> +                                 NULLSTR(*ifname));
>              goto cleanup;
>          }
>          tapfd[i] = fd;

This hunk does not belong here.

Michal