From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=33592 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1ORF3W-0001ph-5F for qemu-devel@nongnu.org; Tue, 22 Jun 2010 21:47:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1ORF3U-0006ea-Rh for qemu-devel@nongnu.org; Tue, 22 Jun 2010 21:47:10 -0400 Received: from mail-gy0-f173.google.com ([209.85.160.173]:63642) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ORF3U-0006eV-Ke for qemu-devel@nongnu.org; Tue, 22 Jun 2010 21:47:08 -0400 Received: by gyd5 with SMTP id 5so3545226gyd.4 for ; Tue, 22 Jun 2010 18:47:08 -0700 (PDT) Message-ID: <4C21679A.1020406@codemonkey.ws> Date: Tue, 22 Jun 2010 20:47:06 -0500 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH] give some useful error messages when tap open References: <20100602143301.0289520c@redhat.com> In-Reply-To: <20100602143301.0289520c@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Luiz Capitulino Cc: mjt@tls.msk.ru, qemu-devel@nongnu.org On 06/02/2010 12:33 PM, Luiz Capitulino wrote: > From: Michael Tokarev > > In net/tap-linux.c, when manipulation of /dev/net/tun fails, it prints > (with fprintf) something like this: > > warning: could not open /dev/net/tun: no virtual network emulation > > this has 2 issues: > 1) it is not a warning really, it's a fatal error (kvm exits after > that), > 2) there's no indication as of what's actually wrong: printing errno there > is helpful. > > The patch below removes the "warning" prefix, uses %m (since it's linux, > %m is available as format modifier), and changes fprintf() to %qemu_error(). > Now it prints something like this instead: > > could not configure /dev/net/tun: Device or resource busy > > (there are 2 messages like that in the same function) > > This fixes Debian bug #578154, see > http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=578154 > > Signed-off-by: Michael Tokarev > Signed-off-by: Luiz Capitulino > Applied. Thanks. Regards, Anthony Liguori > --- > IMPORTANT: this an old fix that got forgotten, probably because it was > submitted in the middle of thread. I've just compiled tested it. > > net/tap-linux.c | 8 +++++--- > 1 files changed, 5 insertions(+), 3 deletions(-) > > diff --git a/net/tap-linux.c b/net/tap-linux.c > index 03b8301..c92983c 100644 > --- a/net/tap-linux.c > +++ b/net/tap-linux.c > @@ -33,14 +33,16 @@ > #include "qemu-common.h" > #include "qemu-error.h" > > +#define PATH_NET_TUN "/dev/net/tun" > + > int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_required) > { > struct ifreq ifr; > int fd, ret; > > - TFR(fd = open("/dev/net/tun", O_RDWR)); > + TFR(fd = open(PATH_NET_TUN, O_RDWR)); > if (fd< 0) { > - fprintf(stderr, "warning: could not open /dev/net/tun: no virtual network emulation\n"); > + error_report("could not open %s: %m", PATH_NET_TUN); > return -1; > } > memset(&ifr, 0, sizeof(ifr)); > @@ -71,7 +73,7 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_required > pstrcpy(ifr.ifr_name, IFNAMSIZ, "tap%d"); > ret = ioctl(fd, TUNSETIFF, (void *)&ifr); > if (ret != 0) { > - fprintf(stderr, "warning: could not configure /dev/net/tun: no virtual network emulation\n"); > + error_report("could not configure %s (%s): %m", PATH_NET_TUN, ifr.ifr_name); > close(fd); > return -1; > } >