Re: [RFC PATCH v9 00/19] virtio/vsock: introduce SOCK_SEQPACKET support

From: Arseny Krasnov
Date: Thu May 13 2021 - 10:46:59 EST



On 13.05.2021 17:10, Stefano Garzarella wrote:
> Hi Arseny,
>
> On Sat, May 08, 2021 at 07:30:23PM +0300, Arseny Krasnov wrote:
>> This patchset implements support of SOCK_SEQPACKET for virtio
>> transport.
>> As SOCK_SEQPACKET guarantees to save record boundaries, so to
>> do it, new bit for field 'flags' was added: SEQ_EOR. This bit is
>> set to 1 in last RW packet of message.
>> Now as packets of one socket are not reordered neither on vsock
>> nor on vhost transport layers, such bit allows to restore original
>> message on receiver's side. If user's buffer is smaller than message
>> length, when all out of size data is dropped.
>> Maximum length of datagram is not limited as in stream socket,
>> because same credit logic is used. Difference with stream socket is
>> that user is not woken up until whole record is received or error
>> occurred. Implementation also supports 'MSG_TRUNC' flags.
>> Tests also implemented.
>>
>> Thanks to stsp2@xxxxxxxxx for encouragements and initial design
>> recommendations.
>>
>> Arseny Krasnov (19):
>> af_vsock: update functions for connectible socket
>> af_vsock: separate wait data loop
>> af_vsock: separate receive data loop
>> af_vsock: implement SEQPACKET receive loop
>> af_vsock: implement send logic for SEQPACKET
>> af_vsock: rest of SEQPACKET support
>> af_vsock: update comments for stream sockets
>> virtio/vsock: set packet's type in virtio_transport_send_pkt_info()
>> virtio/vsock: simplify credit update function API
>> virtio/vsock: defines and constants for SEQPACKET
>> virtio/vsock: dequeue callback for SOCK_SEQPACKET
>> virtio/vsock: add SEQPACKET receive logic
>> virtio/vsock: rest of SOCK_SEQPACKET support
>> virtio/vsock: enable SEQPACKET for transport
>> vhost/vsock: enable SEQPACKET for transport
>> vsock/loopback: enable SEQPACKET for transport
>> vsock_test: add SOCK_SEQPACKET tests
>> virtio/vsock: update trace event for SEQPACKET
>> af_vsock: serialize writes to shared socket
>>
>> drivers/vhost/vsock.c | 42 +-
>> include/linux/virtio_vsock.h | 9 +
>> include/net/af_vsock.h | 8 +
>> .../events/vsock_virtio_transport_common.h | 5 +-
>> include/uapi/linux/virtio_vsock.h | 9 +
>> net/vmw_vsock/af_vsock.c | 417 +++++++++++------
>> net/vmw_vsock/virtio_transport.c | 25 +
>> net/vmw_vsock/virtio_transport_common.c | 129 ++++-
>> net/vmw_vsock/vsock_loopback.c | 11 +
>> tools/testing/vsock/util.c | 32 +-
>> tools/testing/vsock/util.h | 3 +
>> tools/testing/vsock/vsock_test.c | 63 +++
>> 12 files changed, 594 insertions(+), 159 deletions(-)
>>
>> v8 -> v9:
>> General changelog:
>> - see per patch change log.
>>
> I reviewed this series and left some comments.
>
> Before remove the RFC tag, please check that all the commit messages
> contains the right information.
>
> Also, I recommend you take a look on how the other commits in the Linux
> tree are written because the commits in this series look like todo
> lists.
> For RFC could be fine, but for the final version it would be better to
> rewrite them following the advice written here:
> Documentation/process/submitting-patches.rst
Thank You for review, ok, i'll check it
>
> Thanks,
> Stefano
>
>