From: mdroth <mdroth@linux.vnet.ibm.com>
To: Luiz Capitulino <lcapitulino@redhat.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>,
Juan Quintela <quintela@redhat.com>,
mprivozn@redhat.com, coreyb@linux.vnet.ibm.com, mjt@tls.msk.ru,
david.pravec@nethost.cz, qemu-devel@nongnu.org,
Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v2 0/4] monitor: do not rely on O_NONBLOCK for passed file descriptors
Date: Wed, 3 Apr 2013 10:05:40 -0500 [thread overview]
Message-ID: <20130403150540.GA26115@vm> (raw)
In-Reply-To: <20130327091730.0c1bfe09@redhat.com>
On Wed, Mar 27, 2013 at 09:17:30AM -0400, Luiz Capitulino wrote:
> On Wed, 27 Mar 2013 10:10:42 +0100
> Stefan Hajnoczi <stefanha@redhat.com> wrote:
>
> > There are several places where QEMU accidentally relies on the O_NONBLOCK state
> > of passed file descriptors. Exposing O_NONBLOCK state makes it part of the QMP
> > API whenever getfd or fdset_add_fd are used!
> >
> > Whether or not QEMU will use O_NONBLOCK is an implementation detail and should
> > be hidden from QMP clients.
> >
> > This patch series addresses this in 3 steps:
>
> Nice series:
>
> Applied to the qmp branch, thanks.
Hi Luiz,
Eric/mjt have noted that this series fixes a number of issues in 1.4.0
and have requested it for 1.4.1
http://thread.gmane.org/gmane.comp.emulators.qemu/203851
The cut-off for 1.4.1 is Tuesday. Do you plan to send a pull for these soon?
>
> >
> > 1. Fix callers of monitor_handle_fd_param(), monitor_fdset_get_fd(), and
> > monitor_get_fd() that depend on O_NONBLOCK being set. Luckily there are
> > only two instances and they are fixed in Patches 1 & 2.
> >
> > 2. Rename socket_set_nonblock() to qemu_set_nonblock() just like
> > qemu_set_cloexec(). This makes code cleaner when working with arbitrary
> > file descriptors that may not be sockets. See Patch 3.
> >
> > 3. Clear O_NONBLOCK when a chardev receives file descriptors. From now on QEMU
> > can assume that passed file descriptors are in blocking mode. Simply use
> > qemu_set_nonblock(fd) if you want to enable O_NONBLOCK. See Patch 4.
> >
> > This fixes live migration with recent libvirt. Libvirt checks if QEMU supports
> > file descriptor passing and, if yes, hands QEMU a socket with O_NONBLOCK set.
> > The migrate fd:<foo> code assumes the socket is in blocking mode. The result
> > is a corrupted migration stream. For more info on this bug, see:
> >
> > https://bugzilla.redhat.com/show_bug.cgi?id=923124
> >
> > Note that Michal Privoznik <mprivozn@redhat.com> also sent a libvirt patch so
> > that old QEMUs work with new libvirts:
> >
> > https://www.redhat.com/archives/libvir-list/2013-March/msg01486.html
> >
> > My patch series fixes the QMP API and allows old libvirts to work again with
> > new QEMUs.
> >
> > v2:
> > * Rename socket_set_nonblock() in Patch 1 to avoid code churn [eblake]
> > * Avoid qemu_set_block(-1) calls that clobber errno [quintela]
> >
> > Stefan Hajnoczi (4):
> > oslib-posix: rename socket_set_nonblock() to qemu_set_nonblock()
> > net: ensure "socket" backend uses non-blocking fds
> > qemu-socket: set passed fd non-blocking in socket_connect()
> > chardev: clear O_NONBLOCK on SCM_RIGHTS file descriptors
> >
> > block/nbd.c | 2 +-
> > block/sheepdog.c | 2 +-
> > include/qemu/sockets.h | 4 ++--
> > migration.c | 2 +-
> > nbd.c | 8 ++++----
> > net/socket.c | 13 +++++++++----
> > qemu-char.c | 11 +++++++----
> > savevm.c | 2 +-
> > slirp/misc.c | 2 +-
> > slirp/tcp_subr.c | 4 ++--
> > ui/vnc.c | 2 +-
> > util/oslib-posix.c | 4 ++--
> > util/oslib-win32.c | 4 ++--
> > util/qemu-sockets.c | 5 +++--
> > 14 files changed, 37 insertions(+), 28 deletions(-)
> >
>
>
next prev parent reply other threads:[~2013-04-03 15:10 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-27 9:10 [Qemu-devel] [PATCH v2 0/4] monitor: do not rely on O_NONBLOCK for passed file descriptors Stefan Hajnoczi
2013-03-27 9:10 ` [Qemu-devel] [PATCH v2 1/4] oslib-posix: rename socket_set_nonblock() to qemu_set_nonblock() Stefan Hajnoczi
2013-03-27 9:10 ` [Qemu-devel] [PATCH v2 2/4] net: ensure "socket" backend uses non-blocking fds Stefan Hajnoczi
2013-03-27 9:10 ` [Qemu-devel] [PATCH v2 3/4] qemu-socket: set passed fd non-blocking in socket_connect() Stefan Hajnoczi
2013-03-27 9:10 ` [Qemu-devel] [PATCH v2 4/4] chardev: clear O_NONBLOCK on SCM_RIGHTS file descriptors Stefan Hajnoczi
2013-03-27 11:48 ` [Qemu-devel] [PATCH v2 0/4] monitor: do not rely on O_NONBLOCK for passed " Eric Blake
2013-03-27 13:17 ` Luiz Capitulino
2013-04-03 15:05 ` mdroth [this message]
2013-04-03 15:24 ` Luiz Capitulino
2013-04-03 15:31 ` Luiz Capitulino
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=20130403150540.GA26115@vm \
--to=mdroth@linux.vnet.ibm.com \
--cc=aliguori@us.ibm.com \
--cc=coreyb@linux.vnet.ibm.com \
--cc=david.pravec@nethost.cz \
--cc=lcapitulino@redhat.com \
--cc=mjt@tls.msk.ru \
--cc=mprivozn@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=stefanha@redhat.com \
/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.