On 05/12/2015 06:03 AM, Markus Armbruster wrote: > When -netdev tap fails, it first reports a specific error, then a > generic one, like this: > > $ qemu-system-x86_64 -netdev tap,id=foo > qemu-system-x86_64: -netdev tap,id=foo: could not configure /dev/net/tun: Operation not permitted > qemu-system-x86_64: -netdev tap,id=foo: Device 'tap' could not be initialized > > With the command line, the messages go to stderr. In HMP, they go to > the monitor. In QMP, the second one becomes the error reply, and the > first one goes to stderr. > > Convert net_init_tap() to Error. This suppresses the unwanted second > message, and and makes the specific error the QMP error reply. s/and and/and/ > > Signed-off-by: Markus Armbruster > --- > net/tap.c | 45 ++++++++++++++++++++++----------------------- > 1 file changed, 22 insertions(+), 23 deletions(-) > > @@ -807,15 +807,15 @@ int net_init_tap(const NetClientOptions *opts, const char *name, > tap->has_vhostfds ? vhost_fds[i] : NULL, > vnet_hdr, fd, &err); > if (err) { > - error_report_err(err); > + error_propagate(errp, err); > return -1; > } > } > } else if (tap->has_helper) { > if (tap->has_ifname || tap->has_script || tap->has_downscript || > tap->has_vnet_hdr || tap->has_queues || tap->has_vhostfds) { > - error_report("ifname=, script=, downscript=, and vnet_hdr= " > - "queues=, and vhostfds= are invalid with helper="); > + error_setg(errp, "ifname=, script=, downscript=, and vnet_hdr= " > + "queues=, and vhostfds= are invalid with helper="); As long as you are touching this, s/and vnet_hdr=/vnet_hdr=,/ Minor enough that I'm okay with fixing it, and adding: Reviewed-by: Eric Blake -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org