[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC PATCH 0/6] vhost-user: Shutdown/Flush slave channel properly
From: |
Vivek Goyal |
Subject: |
Re: [RFC PATCH 0/6] vhost-user: Shutdown/Flush slave channel properly |
Date: |
Wed, 10 Feb 2021 17:15:44 -0500 |
On Wed, Feb 10, 2021 at 04:39:06PM -0500, Michael S. Tsirkin wrote:
> On Mon, Jan 25, 2021 at 01:01:09PM -0500, Vivek Goyal wrote:
> > Hi,
> >
> > We are working on DAX support in virtiofs and have some patches out of
> > the tree hosted here.
> >
> > https://gitlab.com/virtio-fs/qemu/-/commits/virtio-fs-dev
> >
> > These patches have not been proposed for merge yet, becasue David
> > Gilbert noticed that we can run into a deadlock during an emergency
> > reboot of guest kernel. (echo b > /proc/sysrq-trigger).
> >
> > I have provided details of deadlock in 4th path of the series with
> > subject "qemu, vhost-user: Extend protocol to start/stop/flush slave
> > channel".
> >
> > Basic problem seems to be that we don't have a proper mechanism to
> > shutdown slave channel when vhost-user device is stopping. This means
> > there might be pending messages in slave channel and slave is blocked
> > and waiting for response.
> >
> > This is an RFC patch series to enhance vhost-user protocol to
> > properly shutdown/flush slave channel and avoid the deadlock. Though
> > we faced the issue in the context of virtiofs, any vhost-user
> > device using slave channel can potentially run into issues and
> > can benefit from these patches.
> >
> > Any feedback is welcome. Currently patches are based on out of
> > tree code but after I get some feedback, I can only take pieces
> > which are relevant to upstream and post separately.
> >
> > Thanks
> > Vivek
>
> No comments so far - do you plan to post a non-RFC patchset?
Yes. Stefan wants me to poll both unix fd and slave fd in device
shutdown path and serve both of these in parallel, instead of
adding a new slave channel shutdown message. I am planning to give
it a try and post new patches.
Vivek
>
>
> > Vivek Goyal (6):
> > virtiofsd: Drop ->vu_dispatch_rwlock while waiting for thread to exit
> > libvhost-user: Use slave_mutex in all slave messages
> > vhost-user: Return error code from slave_read()
> > qemu, vhost-user: Extend protocol to start/stop/flush slave channel
> > libvhost-user: Add support to start/stop/flush slave channel
> > virtiofsd: Opt in for slave start/stop/shutdown functionality
> >
> > hw/virtio/vhost-user.c | 151 +++++++++++++++++++++-
> > subprojects/libvhost-user/libvhost-user.c | 147 +++++++++++++++++----
> > subprojects/libvhost-user/libvhost-user.h | 8 +-
> > tools/virtiofsd/fuse_virtio.c | 20 +++
> > 4 files changed, 294 insertions(+), 32 deletions(-)
> >
> > --
> > 2.25.4
>