From: "Daniel P. Berrange" <berrange@redhat.com>
To: Anthony Liguori <aliguori@us.ibm.com>
Cc: qemu-devel@nongnu.org
Subject: [Qemu-devel] Re: [PATCH] net: provide a friendly message when a user passes a bad -net tap, fd=X
Date: Mon, 11 Oct 2010 10:45:07 +0100 [thread overview]
Message-ID: <20101011094507.GA4291@redhat.com> (raw)
In-Reply-To: <1286575496-10314-1-git-send-email-aliguori@us.ibm.com>
On Fri, Oct 08, 2010 at 05:04:56PM -0500, Anthony Liguori wrote:
> A lot of people copy libvirt's command line from ps -ef and then wonder why the
> VM isn't working correctly. Let's be kind and tell them what they should do
> instead.
>
> Without this patch, if you run with an invalid -net tap,fd=X, the guest still
> runs and we poll 100% on a bad file descriptor. With this patch, you get:
>
> qemu: -net tap,fd=42: invalid fd= for tap network device. If you're copying
> from libvirt, use `virsh dom2xml-to-native' instead
> qemu: -net tap,fd=42: Device 'tap' could not be initialized
>
> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
>
> diff --git a/hw/usb-uhci.c b/hw/usb-uhci.c
> index 1d83400..5f9f749 100644
> --- a/hw/usb-uhci.c
> +++ b/hw/usb-uhci.c
> @@ -64,7 +64,7 @@
> #define UHCI_PORT_CSC (1 << 1)
> #define UHCI_PORT_CCS (1 << 0)
>
> -#define FRAME_TIMER_FREQ 1000
> +#define FRAME_TIMER_FREQ 500
>
> #define FRAME_MAX_LOOPS 100
>
> @@ -1054,7 +1054,7 @@ static void uhci_frame_timer(void *opaque)
> UHCIState *s = opaque;
>
> /* prepare the timer for the next frame */
> - s->expire_time += (get_ticks_per_sec() / FRAME_TIMER_FREQ);
> + s->expire_time = qemu_get_clock(vm_clock) + (get_ticks_per_sec() / FRAME_TIMER_FREQ);
>
> if (!(s->cmd & UHCI_CMD_RS)) {
> /* Full stop */
> diff --git a/net/tap.c b/net/tap.c
> index 0147dab..45b1fb6 100644
> --- a/net/tap.c
> +++ b/net/tap.c
> @@ -405,6 +405,8 @@ int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan
> int fd, vnet_hdr = 0;
>
> if (qemu_opt_get(opts, "fd")) {
> + int flags;
> +
> if (qemu_opt_get(opts, "ifname") ||
> qemu_opt_get(opts, "script") ||
> qemu_opt_get(opts, "downscript") ||
> @@ -418,6 +420,11 @@ int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan
> return -1;
> }
>
> + if (fcntl(fd, F_GETFL, &flags) == -1) {
> + error_report("invalid fd= for tap network device. If you're copying from libvirt, use `virsh dom2xml-to-native' instead");
It is just 'domxml-to-native' - no '2' in there.
Should it check for EBADF explicitly ? I guess this is the only errno that
can really happen here, but I always prefer strict checks myself.
Regards,
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
prev parent reply other threads:[~2010-10-11 9:45 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-08 22:04 [Qemu-devel] [PATCH] net: provide a friendly message when a user passes a bad -net tap, fd=X Anthony Liguori
2010-10-08 23:28 ` Alexander Graf
2010-10-08 23:36 ` Anthony Liguori
2010-10-11 9:45 ` Daniel P. Berrange [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20101011094507.GA4291@redhat.com \
--to=berrange@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.