Re: [PATCH 0/2] 9p/trans_virtio: handle request cancellation

From: Greg Kurz
Date: Mon Jan 08 2018 - 10:15:15 EST


Hi Michael,

I wish you a happy new year, and I really need some feedback on this
series because it holds down some patches on the QEMU side.

Thanks,

--
Greg

On Wed, 20 Dec 2017 18:46:27 +0100
Greg Kurz <groug@xxxxxxxx> wrote:

> The 9p protocol mostly relies on a request/reply dialog between the
> client and the server. A notable exception to this rule is request
> cancellation (ie, flush in 9p wording): when the client requests an
> in-flight request to be flushed, the server should only reply to the
> flush request and not to the flushed in-flight request (otherwise it
> considers the in-flight request to have completed just like it has
> never been flushed).
>
> It is up to the client to inform the transport that the in-flight request
> has been flushed and won't receive a reply. This is achieved with the
> 'cancelled' operation of the struct p9_trans_module.
>
> This operation isn't currently implemented with the virtio transport.
> As a consequence, flushed requests leave buffers in the used list
> forever and the virtqueue ends up in being able to process only one
> request at a time.
>
> This issue never popped up because the 9p server in QEMU had a bug
> and would always reply to flushed requests. But this will be fixed
> soon, so it is time to implement the 'cancelled' operation in the
> 9p virtio transport.
>
> --
> Greg
>
> ---
>
> Greg Kurz (2):
> virtio: allow to detach a buffer from the virtqueue
> 9p/trans_virtio: implement cancelled callback
>
>
> drivers/virtio/virtio_ring.c | 28 ++++++++++++++++++++++++++++
> include/linux/virtio.h | 1 +
> net/9p/trans_virtio.c | 18 ++++++++++++++++++
> 3 files changed, 47 insertions(+)
>
>