From: Yuanhan Liu <yuanhan.liu@linux.intel.com>
To: "Marc-André Lureau" <mlureau@redhat.com>
Cc: marcandre lureau <marcandre.lureau@redhat.com>,
qemu-devel@nongnu.org, "Michael S. Tsirkin" <mst@redhat.com>,
Tetsuya Mukawa <mukawa@igel.co.jp>,
jonshin@cisco.com, Ilya Maximets <i.maximets@samsung.com>
Subject: Re: [Qemu-devel] [PATCH 11/18] vhost-user: add shutdown support
Date: Wed, 13 Apr 2016 10:32:31 -0700 [thread overview]
Message-ID: <20160413173231.GV3080@yliu-dev.sh.intel.com> (raw)
In-Reply-To: <38556601.765791.1460541075761.JavaMail.zimbra@redhat.com>
On Wed, Apr 13, 2016 at 05:51:15AM -0400, Marc-André Lureau wrote:
> Hi
>
> ----- Original Message -----
> > Hi Marc,
> >
> > First of all, sorry again for late response!
> >
> > Last time I tried with your first version, I found few issues related
> > with reconnect, mainly on the acked_feautres lost. While checking your
> > new code, I found that you've already solved that, which is great.
> >
> > So, I tried harder this time, your patches work great, except that I
> > found few nits.
> >
> > On Fri, Apr 01, 2016 at 01:16:21PM +0200, marcandre.lureau@redhat.com wrote:
> > > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ...
> > > +Slave message types
> > > +-------------------
> > > +
> > > + * VHOST_USER_SLAVE_SHUTDOWN:
> > > + Id: 1
> > > + Master payload: N/A
> > > + Slave payload: u64
> > > +
> > > + Request the master to shutdown the slave. A 0 reply is for
> > > + success, in which case the slave may close all connections
> > > + immediately and quit.
> >
> > Assume we are using ovs + dpdk here, that we could have two
> > vhost-user connections. While ovs tries to initiate a restart,
> > it might unregister the two connections one by one. In such
> > case, two VHOST_USER_SLAVE_SHUTDOWN request will be sent,
> > and two replies will get. Therefore, I don't think it's a
> > proper ask here to let the backend implementation to do quit
> > here.
> >
>
> On success reply, the master sent all the commands to finish the connection. So the slave must flush/finish all pending requests first.
Yes, that's okay. I here just mean the "close __all__ connections"
and "quit" part.
Firstly, we should do cleanup/flush/finish to it's own connection.
But not all, right?
Second, as stated, doing quit might not make sense, as we may
have more connections.
> I think this should be enough, otherwise we may need a new explicit message?
>
> >
> > >
> > > switch (msg.request) {
> > > + case VHOST_USER_SLAVE_SHUTDOWN: {
> > > + uint64_t success = 1; /* 0 is for success */
> > > + if (dev->stop) {
> > > + dev->stop(dev);
> > > + success = 0;
> > > + }
> > > + msg.payload.u64 = success;
> > > + msg.size = sizeof(msg.payload.u64);
> > > + size = send(u->slave_fd, &msg, VHOST_USER_HDR_SIZE + msg.size, 0);
> > > + if (size != VHOST_USER_HDR_SIZE + msg.size) {
> > > + error_report("Failed to write reply.");
> > > + }
> > > + break;
> >
> > You might want to remove the slave_fd from watch list? We
> > might also need to close slave_fd here, assuming that we
> > will no longer use it when VHOST_USER_SLAVE_SHUTDOWN is
> > received?
>
> Makes sense, I will change that in next update.
>
> > I'm asking because I found a seg fault issue sometimes,
> > due to opaque is NULL.
Oh, I was wrong, it's u being NULL, but not opaque.
> >
>
> I would be interested to see the backtrace or have a reproducer.
It's a normal test steps: start a vhost-user switch (I'm using DPDK
vhost-switch example), kill it, and wait for a while (something like
more than 10s or even longer), then I saw a seg fault:
(gdb) p dev
$4 = (struct vhost_dev *) 0x555556571bf0
(gdb) p u
$5 = (struct vhost_user *) 0x0
(gdb) where
#0 0x0000555555798612 in slave_read (opaque=0x555556571bf0)
at /home/yliu/qemu/hw/virtio/vhost-user.c:539
#1 0x0000555555a343a4 in aio_dispatch (ctx=0x55555655f560) at /home/yliu/qemu/aio-posix.c:327
#2 0x0000555555a2738b in aio_ctx_dispatch (source=0x55555655f560, callback=0x0, user_data=0x0)
at /home/yliu/qemu/async.c:233
#3 0x00007ffff51032a6 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#4 0x0000555555a3239e in glib_pollfds_poll () at /home/yliu/qemu/main-loop.c:213
#5 0x0000555555a3247b in os_host_main_loop_wait (timeout=29875848) at /home/yliu/qemu/main-loop.c:258
#6 0x0000555555a3252b in main_loop_wait (nonblocking=0) at /home/yliu/qemu/main-loop.c:506
#7 0x0000555555846e35 in main_loop () at /home/yliu/qemu/vl.c:1934
#8 0x000055555584e6bf in main (argc=31, argv=0x7fffffffe078, envp=0x7fffffffe178)
at /home/yliu/qemu/vl.c:4658
--yliu
next prev parent reply other threads:[~2016-04-13 17:33 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-01 11:16 [Qemu-devel] [PATCH 00/18] RFCv2: vhost-user: shutdown and reconnection marcandre.lureau
2016-04-01 11:16 ` [Qemu-devel] [PATCH 01/18] tests: append i386 tests marcandre.lureau
2016-04-01 20:30 ` [Qemu-devel] [PATCH 01/18 for-2.6] " Eric Blake
2016-04-01 11:16 ` [Qemu-devel] [PATCH 02/18] char: lower reconnect error to trace event marcandre.lureau
2016-04-01 11:16 ` [Qemu-devel] [PATCH 03/18] char: use a trace for when the char is waiting marcandre.lureau
2016-04-01 11:16 ` [Qemu-devel] [PATCH 04/18] char: add wait support for reconnect marcandre.lureau
2016-04-28 4:33 ` Yuanhan Liu
2016-04-01 11:16 ` [Qemu-devel] [PATCH 05/18] vhost-user: check reconnect comes with wait marcandre.lureau
2016-04-01 11:16 ` [Qemu-devel] [PATCH 06/18] vhost-user: add ability to know vhost-user backend disconnection marcandre.lureau
2016-04-01 11:16 ` [Qemu-devel] [PATCH 07/18] vhost: add vhost_dev stop callback marcandre.lureau
2016-04-01 11:16 ` [Qemu-devel] [PATCH 08/18] vhost-user: add vhost_user to hold the chr marcandre.lureau
2016-04-01 11:16 ` [Qemu-devel] [PATCH 09/18] qemu-char: add qemu_chr_disconnect to close a fd accepted by listen fd marcandre.lureau
2016-04-01 11:16 ` [Qemu-devel] [PATCH 10/18] vhost-user: add slave-fd support marcandre.lureau
2016-04-01 20:33 ` Eric Blake
2016-04-01 11:16 ` [Qemu-devel] [PATCH 11/18] vhost-user: add shutdown support marcandre.lureau
2016-04-13 2:49 ` Yuanhan Liu
2016-04-13 9:51 ` Marc-André Lureau
2016-04-13 17:32 ` Yuanhan Liu [this message]
2016-04-13 21:43 ` Marc-André Lureau
2016-04-13 21:57 ` Yuanhan Liu
2016-04-28 5:23 ` Yuanhan Liu
2016-04-29 10:40 ` Marc-André Lureau
2016-04-29 17:48 ` Yuanhan Liu
2016-05-01 11:37 ` Michael S. Tsirkin
2016-05-01 21:04 ` Yuanhan Liu
2016-05-02 10:45 ` Michael S. Tsirkin
2016-05-02 11:29 ` Marc-André Lureau
2016-05-02 12:04 ` Michael S. Tsirkin
2016-05-02 17:50 ` Yuanhan Liu
2016-05-04 13:16 ` Marc-André Lureau
2016-05-04 19:13 ` Michael S. Tsirkin
2016-05-05 3:44 ` Yuanhan Liu
2016-05-05 13:42 ` Michael S. Tsirkin
2016-05-02 17:37 ` Yuanhan Liu
2016-04-01 11:16 ` [Qemu-devel] [PATCH 12/18] vhost-user: disconnect on start failure marcandre.lureau
2016-04-01 11:16 ` [Qemu-devel] [PATCH 13/18] vhost-net: do not crash if backend is not present marcandre.lureau
2016-04-01 11:16 ` [Qemu-devel] [PATCH 14/18] vhost-net: save & restore vhost-user acked features marcandre.lureau
2016-04-01 11:16 ` [Qemu-devel] [PATCH 15/18] vhost-net: save & restore vring enable state marcandre.lureau
2016-04-01 11:16 ` [Qemu-devel] [PATCH 16/18] test: vubr check " marcandre.lureau
2016-04-01 11:16 ` [Qemu-devel] [PATCH 17/18] test: start vhost-user reconnect test marcandre.lureau
2016-04-01 11:16 ` [Qemu-devel] [PATCH 18/18] test: add shutdown support vubr test marcandre.lureau
2016-04-13 2:52 ` Yuanhan Liu
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=20160413173231.GV3080@yliu-dev.sh.intel.com \
--to=yuanhan.liu@linux.intel.com \
--cc=i.maximets@samsung.com \
--cc=jonshin@cisco.com \
--cc=marcandre.lureau@redhat.com \
--cc=mlureau@redhat.com \
--cc=mst@redhat.com \
--cc=mukawa@igel.co.jp \
--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.