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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

Thanks,
Stefano




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux