[net-next,v9,0/4] vsock/virtio/vhost: MSG_ZEROCOPY preparations

Message ID 20230916130918.4105122-1-avkrasnov@salutedevices.com
Headers
Series vsock/virtio/vhost: MSG_ZEROCOPY preparations |

Message

Arseniy Krasnov Sept. 16, 2023, 1:09 p.m. UTC
  Hello,

this patchset is first of three parts of another big patchset for
MSG_ZEROCOPY flag support:
https://lore.kernel.org/netdev/20230701063947.3422088-1-AVKrasnov@sberdevices.ru/

During review of this series, Stefano Garzarella <sgarzare@redhat.com>
suggested to split it for three parts to simplify review and merging:

1) virtio and vhost updates (for fragged skbs) <--- this patchset
2) AF_VSOCK updates (allows to enable MSG_ZEROCOPY mode and read
   tx completions) and update for Documentation/.
3) Updates for tests and utils.

This series enables handling of fragged skbs in virtio and vhost parts.
Newly logic won't be triggered, because SO_ZEROCOPY options is still
impossible to enable at this moment (next bunch of patches from big
set above will enable it).

I've included changelog to some patches anyway, because there were some
comments during review of last big patchset from the link above.

Head for this patchset is:
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=f2fa1c812c91e99d0317d1fc7d845e1e05f39716

Link to v1:
https://lore.kernel.org/netdev/20230717210051.856388-1-AVKrasnov@sberdevices.ru/
Link to v2:
https://lore.kernel.org/netdev/20230718180237.3248179-1-AVKrasnov@sberdevices.ru/
Link to v3:
https://lore.kernel.org/netdev/20230720214245.457298-1-AVKrasnov@sberdevices.ru/
Link to v4:
https://lore.kernel.org/netdev/20230727222627.1895355-1-AVKrasnov@sberdevices.ru/
Link to v5:
https://lore.kernel.org/netdev/20230730085905.3420811-1-AVKrasnov@sberdevices.ru/
Link to v6:
https://lore.kernel.org/netdev/20230814212720.3679058-1-AVKrasnov@sberdevices.ru/
Link to v7:
https://lore.kernel.org/netdev/20230827085436.941183-1-avkrasnov@salutedevices.com/
Link to v8:
https://lore.kernel.org/netdev/20230911202234.1932024-1-avkrasnov@salutedevices.com/

Changelog:
 v3 -> v4:
 * Patchset rebased and tested on new HEAD of net-next (see hash above).
 v4 -> v5:
 * See per-patch changelog after ---.
 v5 -> v6:
 * Patchset rebased and tested on new HEAD of net-next (see hash above).
 * See per-patch changelog after ---.
 v6 -> v7:
 * Patchset rebased and tested on new HEAD of net-next (see hash above).
 * See per-patch changelog after ---.
 v7 -> v8:
 * Patchset rebased and tested on new HEAD of net-next (see hash above).
 * See per-patch changelog after ---.
 v8 -> v9:
 * Patchset rebased and tested on new HEAD of net-next (see hash above).
 * See per-patch changelog after ---.

Arseniy Krasnov (4):
  vsock/virtio/vhost: read data from non-linear skb
  vsock/virtio: support to send non-linear skb
  vsock/virtio: non-linear skb handling for tap
  vsock/virtio: MSG_ZEROCOPY flag support

 drivers/vhost/vsock.c                         |  14 +-
 include/linux/virtio_vsock.h                  |  10 +
 .../events/vsock_virtio_transport_common.h    |  12 +-
 net/vmw_vsock/virtio_transport.c              |  92 +++++-
 net/vmw_vsock/virtio_transport_common.c       | 307 ++++++++++++++----
 5 files changed, 348 insertions(+), 87 deletions(-)
  

Comments

Arseniy Krasnov Sept. 18, 2023, 4:56 p.m. UTC | #1
Hi Stefano,

thanks for review! So when this patchset will be merged to net-next,
I'll start sending next part of MSG_ZEROCOPY patchset, e.g. AF_VSOCK +
Documentation/ patches.

Thanks, Arseniy

On 16.09.2023 16:09, Arseniy Krasnov wrote:
> Hello,
> 
> this patchset is first of three parts of another big patchset for
> MSG_ZEROCOPY flag support:
> https://lore.kernel.org/netdev/20230701063947.3422088-1-AVKrasnov@sberdevices.ru/
> 
> During review of this series, Stefano Garzarella <sgarzare@redhat.com>
> suggested to split it for three parts to simplify review and merging:
> 
> 1) virtio and vhost updates (for fragged skbs) <--- this patchset
> 2) AF_VSOCK updates (allows to enable MSG_ZEROCOPY mode and read
>    tx completions) and update for Documentation/.
> 3) Updates for tests and utils.
> 
> This series enables handling of fragged skbs in virtio and vhost parts.
> Newly logic won't be triggered, because SO_ZEROCOPY options is still
> impossible to enable at this moment (next bunch of patches from big
> set above will enable it).
> 
> I've included changelog to some patches anyway, because there were some
> comments during review of last big patchset from the link above.
> 
> Head for this patchset is:
> https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=f2fa1c812c91e99d0317d1fc7d845e1e05f39716
> 
> Link to v1:
> https://lore.kernel.org/netdev/20230717210051.856388-1-AVKrasnov@sberdevices.ru/
> Link to v2:
> https://lore.kernel.org/netdev/20230718180237.3248179-1-AVKrasnov@sberdevices.ru/
> Link to v3:
> https://lore.kernel.org/netdev/20230720214245.457298-1-AVKrasnov@sberdevices.ru/
> Link to v4:
> https://lore.kernel.org/netdev/20230727222627.1895355-1-AVKrasnov@sberdevices.ru/
> Link to v5:
> https://lore.kernel.org/netdev/20230730085905.3420811-1-AVKrasnov@sberdevices.ru/
> Link to v6:
> https://lore.kernel.org/netdev/20230814212720.3679058-1-AVKrasnov@sberdevices.ru/
> Link to v7:
> https://lore.kernel.org/netdev/20230827085436.941183-1-avkrasnov@salutedevices.com/
> Link to v8:
> https://lore.kernel.org/netdev/20230911202234.1932024-1-avkrasnov@salutedevices.com/
> 
> Changelog:
>  v3 -> v4:
>  * Patchset rebased and tested on new HEAD of net-next (see hash above).
>  v4 -> v5:
>  * See per-patch changelog after ---.
>  v5 -> v6:
>  * Patchset rebased and tested on new HEAD of net-next (see hash above).
>  * See per-patch changelog after ---.
>  v6 -> v7:
>  * Patchset rebased and tested on new HEAD of net-next (see hash above).
>  * See per-patch changelog after ---.
>  v7 -> v8:
>  * Patchset rebased and tested on new HEAD of net-next (see hash above).
>  * See per-patch changelog after ---.
>  v8 -> v9:
>  * Patchset rebased and tested on new HEAD of net-next (see hash above).
>  * See per-patch changelog after ---.
> 
> Arseniy Krasnov (4):
>   vsock/virtio/vhost: read data from non-linear skb
>   vsock/virtio: support to send non-linear skb
>   vsock/virtio: non-linear skb handling for tap
>   vsock/virtio: MSG_ZEROCOPY flag support
> 
>  drivers/vhost/vsock.c                         |  14 +-
>  include/linux/virtio_vsock.h                  |  10 +
>  .../events/vsock_virtio_transport_common.h    |  12 +-
>  net/vmw_vsock/virtio_transport.c              |  92 +++++-
>  net/vmw_vsock/virtio_transport_common.c       | 307 ++++++++++++++----
>  5 files changed, 348 insertions(+), 87 deletions(-)
>
  
Michael S. Tsirkin Sept. 18, 2023, 5:27 p.m. UTC | #2
On Sat, Sep 16, 2023 at 04:09:14PM +0300, Arseniy Krasnov wrote:
> Hello,
> 
> this patchset is first of three parts of another big patchset for
> MSG_ZEROCOPY flag support:
> https://lore.kernel.org/netdev/20230701063947.3422088-1-AVKrasnov@sberdevices.ru/
> 
> During review of this series, Stefano Garzarella <sgarzare@redhat.com>
> suggested to split it for three parts to simplify review and merging:
> 
> 1) virtio and vhost updates (for fragged skbs) <--- this patchset
> 2) AF_VSOCK updates (allows to enable MSG_ZEROCOPY mode and read
>    tx completions) and update for Documentation/.
> 3) Updates for tests and utils.
> 
> This series enables handling of fragged skbs in virtio and vhost parts.
> Newly logic won't be triggered, because SO_ZEROCOPY options is still
> impossible to enable at this moment (next bunch of patches from big
> set above will enable it).

Acked-by: Michael S. Tsirkin <mst@redhat.com>
> 
> I've included changelog to some patches anyway, because there were some
> comments during review of last big patchset from the link above.
> 
> Head for this patchset is:
> https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=f2fa1c812c91e99d0317d1fc7d845e1e05f39716
> 
> Link to v1:
> https://lore.kernel.org/netdev/20230717210051.856388-1-AVKrasnov@sberdevices.ru/
> Link to v2:
> https://lore.kernel.org/netdev/20230718180237.3248179-1-AVKrasnov@sberdevices.ru/
> Link to v3:
> https://lore.kernel.org/netdev/20230720214245.457298-1-AVKrasnov@sberdevices.ru/
> Link to v4:
> https://lore.kernel.org/netdev/20230727222627.1895355-1-AVKrasnov@sberdevices.ru/
> Link to v5:
> https://lore.kernel.org/netdev/20230730085905.3420811-1-AVKrasnov@sberdevices.ru/
> Link to v6:
> https://lore.kernel.org/netdev/20230814212720.3679058-1-AVKrasnov@sberdevices.ru/
> Link to v7:
> https://lore.kernel.org/netdev/20230827085436.941183-1-avkrasnov@salutedevices.com/
> Link to v8:
> https://lore.kernel.org/netdev/20230911202234.1932024-1-avkrasnov@salutedevices.com/


> Changelog:
>  v3 -> v4:
>  * Patchset rebased and tested on new HEAD of net-next (see hash above).
>  v4 -> v5:
>  * See per-patch changelog after ---.
>  v5 -> v6:
>  * Patchset rebased and tested on new HEAD of net-next (see hash above).
>  * See per-patch changelog after ---.
>  v6 -> v7:
>  * Patchset rebased and tested on new HEAD of net-next (see hash above).
>  * See per-patch changelog after ---.
>  v7 -> v8:
>  * Patchset rebased and tested on new HEAD of net-next (see hash above).
>  * See per-patch changelog after ---.
>  v8 -> v9:
>  * Patchset rebased and tested on new HEAD of net-next (see hash above).
>  * See per-patch changelog after ---.
> 
> Arseniy Krasnov (4):
>   vsock/virtio/vhost: read data from non-linear skb
>   vsock/virtio: support to send non-linear skb
>   vsock/virtio: non-linear skb handling for tap
>   vsock/virtio: MSG_ZEROCOPY flag support
> 
>  drivers/vhost/vsock.c                         |  14 +-
>  include/linux/virtio_vsock.h                  |  10 +
>  .../events/vsock_virtio_transport_common.h    |  12 +-
>  net/vmw_vsock/virtio_transport.c              |  92 +++++-
>  net/vmw_vsock/virtio_transport_common.c       | 307 ++++++++++++++----
>  5 files changed, 348 insertions(+), 87 deletions(-)
> 
> -- 
> 2.25.1
  
Arseniy Krasnov Sept. 19, 2023, 7:50 a.m. UTC | #3
On 19.09.2023 10:54, Stefano Garzarella wrote:
> On Mon, Sep 18, 2023 at 07:56:00PM +0300, Arseniy Krasnov wrote:
>> Hi Stefano,
>>
>> thanks for review! So when this patchset will be merged to net-next,
>> I'll start sending next part of MSG_ZEROCOPY patchset, e.g. AF_VSOCK +
>> Documentation/ patches.
> 
> Ack, if it is not a very big series, maybe better to include also the
> tests so we can run them before merge the feature.
> 
> WDYT?

Yes, ok! AF_VSOCK part is smaller than virtio part.

Thanks, Arseniy

> 
> Stefano
>
  
Stefano Garzarella Sept. 19, 2023, 7:54 a.m. UTC | #4
On Mon, Sep 18, 2023 at 07:56:00PM +0300, Arseniy Krasnov wrote:
>Hi Stefano,
>
>thanks for review! So when this patchset will be merged to net-next,
>I'll start sending next part of MSG_ZEROCOPY patchset, e.g. AF_VSOCK +
>Documentation/ patches.

Ack, if it is not a very big series, maybe better to include also the
tests so we can run them before merge the feature.

WDYT?

Stefano
  
Paolo Abeni Sept. 19, 2023, 1:19 p.m. UTC | #5
On Tue, 2023-09-19 at 09:54 +0200, Stefano Garzarella wrote:
> On Mon, Sep 18, 2023 at 07:56:00PM +0300, Arseniy Krasnov wrote:
> > Hi Stefano,
> > 
> > thanks for review! So when this patchset will be merged to net-next,
> > I'll start sending next part of MSG_ZEROCOPY patchset, e.g. AF_VSOCK +
> > Documentation/ patches.
> 
> Ack, if it is not a very big series, maybe better to include also the
> tests so we can run them before merge the feature.

I understand that at least 2 follow-up series are waiting for this, one
of them targeting net-next and the bigger one targeting the virtio
tree. Am I correct?

DaveM suggests this should go via the virtio tree, too. Any different
opinion?

Thanks!

Paolo
  
Stefano Garzarella Sept. 19, 2023, 1:35 p.m. UTC | #6
On Tue, Sep 19, 2023 at 03:19:54PM +0200, Paolo Abeni wrote:
>On Tue, 2023-09-19 at 09:54 +0200, Stefano Garzarella wrote:
>> On Mon, Sep 18, 2023 at 07:56:00PM +0300, Arseniy Krasnov wrote:
>> > Hi Stefano,
>> >
>> > thanks for review! So when this patchset will be merged to net-next,
>> > I'll start sending next part of MSG_ZEROCOPY patchset, e.g. AF_VSOCK +
>> > Documentation/ patches.
>>
>> Ack, if it is not a very big series, maybe better to include also the
>> tests so we can run them before merge the feature.
>
>I understand that at least 2 follow-up series are waiting for this, one
>of them targeting net-next and the bigger one targeting the virtio
>tree. Am I correct?

IIUC the next series will touch only the vsock core
(net/vmw_vsock/af_vsock.c), tests, and documentation.

The virtio part should be fully covered by this series.

@Arseniy feel free to correct me!

>
>DaveM suggests this should go via the virtio tree, too. Any different
>opinion?

For this series should be fine, I'm not sure about the next series.
Merging this with the virtio tree, then it forces us to do it for
followup as well right?

In theory followup is more on the core, so better with net-next, but
it's also true that for now only virtio transports support it, so it
might be okay to continue with virtio.

@Michael WDYT?

Thanks,
Stefano
  
Arseniy Krasnov Sept. 19, 2023, 4:48 p.m. UTC | #7
On 19.09.2023 16:35, Stefano Garzarella wrote:
> On Tue, Sep 19, 2023 at 03:19:54PM +0200, Paolo Abeni wrote:
>> On Tue, 2023-09-19 at 09:54 +0200, Stefano Garzarella wrote:
>>> On Mon, Sep 18, 2023 at 07:56:00PM +0300, Arseniy Krasnov wrote:
>>> > Hi Stefano,
>>> >
>>> > thanks for review! So when this patchset will be merged to net-next,
>>> > I'll start sending next part of MSG_ZEROCOPY patchset, e.g. AF_VSOCK +
>>> > Documentation/ patches.
>>>
>>> Ack, if it is not a very big series, maybe better to include also the
>>> tests so we can run them before merge the feature.
>>
>> I understand that at least 2 follow-up series are waiting for this, one
>> of them targeting net-next and the bigger one targeting the virtio
>> tree. Am I correct?
> 
> IIUC the next series will touch only the vsock core
> (net/vmw_vsock/af_vsock.c), tests, and documentation.
> 
> The virtio part should be fully covered by this series.
> 
> @Arseniy feel free to correct me!

Yes, only this patchset touches virtio code. Next patchset will be AF_VSOCK,
Documentation/ and tests. I think there is no need to merge it to the virtio
tree - we can continue in the same way as before during AF_VSOCK development,
e.g. merging it to net-next only.

Thanks, Arseniy

> 
>>
>> DaveM suggests this should go via the virtio tree, too. Any different
>> opinion?
> 
> For this series should be fine, I'm not sure about the next series.
> Merging this with the virtio tree, then it forces us to do it for
> followup as well right?
> 
> In theory followup is more on the core, so better with net-next, but
> it's also true that for now only virtio transports support it, so it
> might be okay to continue with virtio.
> 
> @Michael WDYT?
> 
> Thanks,
> Stefano
>
  
Arseniy Krasnov Sept. 19, 2023, 5:01 p.m. UTC | #8
On 19.09.2023 19:48, Arseniy Krasnov wrote:
> 
> 
> On 19.09.2023 16:35, Stefano Garzarella wrote:
>> On Tue, Sep 19, 2023 at 03:19:54PM +0200, Paolo Abeni wrote:
>>> On Tue, 2023-09-19 at 09:54 +0200, Stefano Garzarella wrote:
>>>> On Mon, Sep 18, 2023 at 07:56:00PM +0300, Arseniy Krasnov wrote:
>>>>> Hi Stefano,
>>>>>
>>>>> thanks for review! So when this patchset will be merged to net-next,
>>>>> I'll start sending next part of MSG_ZEROCOPY patchset, e.g. AF_VSOCK +
>>>>> Documentation/ patches.
>>>>
>>>> Ack, if it is not a very big series, maybe better to include also the
>>>> tests so we can run them before merge the feature.
>>>
>>> I understand that at least 2 follow-up series are waiting for this, one
>>> of them targeting net-next and the bigger one targeting the virtio
>>> tree. Am I correct?
>>
>> IIUC the next series will touch only the vsock core
>> (net/vmw_vsock/af_vsock.c), tests, and documentation.
>>
>> The virtio part should be fully covered by this series.
>>
>> @Arseniy feel free to correct me!
> 
> Yes, only this patchset touches virtio code. Next patchset will be AF_VSOCK,
> Documentation/ and tests. I think there is no need to merge it to the virtio
> tree - we can continue in the same way as before during AF_VSOCK development,
> e.g. merging it to net-next only.

^^^
I mean of course if there is need to merge to virtio tree also - no problem,
just informing that the next set of patches doesn't touch virtio code.
(except two several lines patches for drivers/vhost/vsock.c and net/vmw_vsock/virtio_transport.c)

> 
> Thanks, Arseniy
> 
>>
>>>
>>> DaveM suggests this should go via the virtio tree, too. Any different
>>> opinion?
>>
>> For this series should be fine, I'm not sure about the next series.
>> Merging this with the virtio tree, then it forces us to do it for
>> followup as well right?
>>
>> In theory followup is more on the core, so better with net-next, but
>> it's also true that for now only virtio transports support it, so it
>> might be okay to continue with virtio.
>>
>> @Michael WDYT?
>>
>> Thanks,
>> Stefano
>>
  
Michael S. Tsirkin Sept. 20, 2023, 2:38 a.m. UTC | #9
On Tue, Sep 19, 2023 at 03:35:51PM +0200, Stefano Garzarella wrote:
> On Tue, Sep 19, 2023 at 03:19:54PM +0200, Paolo Abeni wrote:
> > On Tue, 2023-09-19 at 09:54 +0200, Stefano Garzarella wrote:
> > > On Mon, Sep 18, 2023 at 07:56:00PM +0300, Arseniy Krasnov wrote:
> > > > Hi Stefano,
> > > >
> > > > thanks for review! So when this patchset will be merged to net-next,
> > > > I'll start sending next part of MSG_ZEROCOPY patchset, e.g. AF_VSOCK +
> > > > Documentation/ patches.
> > > 
> > > Ack, if it is not a very big series, maybe better to include also the
> > > tests so we can run them before merge the feature.
> > 
> > I understand that at least 2 follow-up series are waiting for this, one
> > of them targeting net-next and the bigger one targeting the virtio
> > tree. Am I correct?
> 
> IIUC the next series will touch only the vsock core
> (net/vmw_vsock/af_vsock.c), tests, and documentation.
> 
> The virtio part should be fully covered by this series.
> 
> @Arseniy feel free to correct me!
> 
> > 
> > DaveM suggests this should go via the virtio tree, too. Any different
> > opinion?
> 
> For this series should be fine, I'm not sure about the next series.
> Merging this with the virtio tree, then it forces us to do it for
> followup as well right?
> 
> In theory followup is more on the core, so better with net-next, but
> it's also true that for now only virtio transports support it, so it
> might be okay to continue with virtio.
> 
> @Michael WDYT?
> 
> Thanks,
> Stefano

I didn't get DaveM's mail - was this off-list?
I think net-next is easier because the follow up belongs in net-next.
But if not I can take it, sure. Let me know.
  
Paolo Abeni Sept. 20, 2023, 11:06 a.m. UTC | #10
On Tue, 2023-09-19 at 22:38 -0400, Michael S. Tsirkin wrote:
> On Tue, Sep 19, 2023 at 03:35:51PM +0200, Stefano Garzarella wrote:
> > On Tue, Sep 19, 2023 at 03:19:54PM +0200, Paolo Abeni wrote:
> > 
> > > DaveM suggests this should go via the virtio tree, too. Any different
> > > opinion?
> > 
> > For this series should be fine, I'm not sure about the next series.
> > Merging this with the virtio tree, then it forces us to do it for
> > followup as well right?
> > 
> > In theory followup is more on the core, so better with net-next, but
> > it's also true that for now only virtio transports support it, so it
> > might be okay to continue with virtio.
> > 
> > @Michael WDYT?
> > 
> > Thanks,
> > Stefano
> 
> I didn't get DaveM's mail - was this off-list?

Yes, that was off-list co-ordination.

> I think net-next is easier because the follow up belongs in net-next.
> But if not I can take it, sure. Let me know.

Since there is agreement on that route, we will take it (likely
tomorrow).

Cheers,

Paolo
  
patchwork-bot+netdevbpf@kernel.org Sept. 21, 2023, 10:50 a.m. UTC | #11
Hello:

This series was applied to netdev/net-next.git (main)
by Paolo Abeni <pabeni@redhat.com>:

On Sat, 16 Sep 2023 16:09:14 +0300 you wrote:
> Hello,
> 
> this patchset is first of three parts of another big patchset for
> MSG_ZEROCOPY flag support:
> https://lore.kernel.org/netdev/20230701063947.3422088-1-AVKrasnov@sberdevices.ru/
> 
> During review of this series, Stefano Garzarella <sgarzare@redhat.com>
> suggested to split it for three parts to simplify review and merging:
> 
> [...]

Here is the summary with links:
  - [net-next,v9,1/4] vsock/virtio/vhost: read data from non-linear skb
    https://git.kernel.org/netdev/net-next/c/0df7cd3c13e4
  - [net-next,v9,2/4] vsock/virtio: support to send non-linear skb
    https://git.kernel.org/netdev/net-next/c/64c99d2d6ada
  - [net-next,v9,3/4] vsock/virtio: non-linear skb handling for tap
    https://git.kernel.org/netdev/net-next/c/4b0bf10eb077
  - [net-next,v9,4/4] vsock/virtio: MSG_ZEROCOPY flag support
    https://git.kernel.org/netdev/net-next/c/581512a6dc93

You are awesome, thank you!