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@xxxxxxxxxx> --- 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