Re: [PATCH 0/5] virtio/vsock: introduce SOCK_SEQPACKET support.

stsp
2021-01-03T21:19:53Z

Hi Arseny, thanks for your work on this!

I did a small review in a hope it helps.
Also it may be cool to have the driver feature
for that (so that the host can see if its supported).
But I guess this was already said by Michael. :)

03.01.2021 22:54, Arseny Krasnov пишет:
> As SOCK_SEQPACKET guarantees to save record boundaries, so to
> do it, new packet operation was added: it marks start of record (with
> record length in header). To send record, packet with start marker is
> sent first, then all data is transmitted as 'RW' packets. On receiver's
> side, length of record is known from packet with start record marker.
> Now as packets of one socket are not reordered neither on vsock nor on
> vhost transport layers, these marker allows to restore original record
> on receiver's side. When each 'RW' packet is inserted to rx queue of
> receiver, user is woken up, data is copied to user's buffer and credit
> update message is sent. If there is no user waiting for data, credit
> won't be updated and sender will wait. Also, if user's buffer is full,
> and record is bigger, all unneeded data will be dropped (with sending of
> credit update message).
> 'MSG_EOR' flag is implemented with special value of 'flags' field
> in packet header. When record is received with such flags, 'MSG_EOR' is
> set in 'recvmsg()' flags. 'MSG_TRUNC' flag is also supported.
> In this implementation maximum length of datagram is not limited
> as in stream socket.
>
> drivers/vhost/vsock.c | 6 +-
> include/linux/virtio_vsock.h | 7 +
> include/net/af_vsock.h | 4 +
> include/uapi/linux/virtio_vsock.h | 9 +
> net/vmw_vsock/af_vsock.c | 457 +++++++++++++++++++-----
> net/vmw_vsock/virtio_transport.c | 3 +
> net/vmw_vsock/virtio_transport_common.c | 323 ++++++++++++++---
> 7 files changed, 673 insertions(+), 136 deletions(-)
>