Re: [RFC PATCH v9 00/19] virtio/vsock: introduce SOCK_SEQPACKET support
From: Stefano Garzarella <sgarzare@redhat.com>
Date: 2021-05-13 14:10:29
Also in:
lkml, netdev, virtualization
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@yandex.ru 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 Thanks, Stefano