Re: [RFC PATCH v1 0/4] virtio/vsock: some updates for MSG_PEEK flag

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

 



On Sun, Jun 18, 2023 at 09:24:47AM +0300, Arseniy Krasnov wrote:
Hello,

This patchset does several things around MSG_PEEK flag support. In
general words it reworks MSG_PEEK test and adds support for this flag
in SOCK_SEQPACKET logic. Here is per-patch description:

1) This is cosmetic change for SOCK_STREAM implementation of MSG_PEEK:
  1) I think there is no need of "safe" mode walk here as there is no
     "unlink" of skbs inside loop (it is MSG_PEEK mode - we don't change
     queue).
  2) Nested while loop is removed: in case of MSG_PEEK we just walk
     over skbs and copy data from each one. I guess this nested loop
     even didn't behave as loop - it always executed just for single
     iteration.

2) This adds MSG_PEEK support for SOCK_SEQPACKET. It could be implemented
  be reworking MSG_PEEK callback for SOCK_STREAM to support SOCK_SEQPACKET
  also, but I think it will be more simple and clear from potential
  bugs to implemented it as separate function thus not mixing logics
  for both types of socket. So I've added it as dedicated function.

3) This is reworked MSG_PEEK test for SOCK_STREAM. Previous version just
  sent single byte, then tried to read it with MSG_PEEK flag, then read
  it in normal way. New version is more complex: now sender uses buffer
  instead of single byte and this buffer is initialized with random
  values. Receiver tests several things:
  1) Read empty socket with MSG_PEEK flag.
  2) Read part of buffer with MSG_PEEK flag.
  3) Read whole buffer with MSG_PEEK flag, then checks that it is same
     as buffer from 2) (limited by size of buffer from 2) of course).
  4) Read whole buffer without any flags, then checks that is is same
     as buffer from 3).

4) This is MSG_PEEK test for SOCK_SEQPACKET. It works in the same way
  as for SOCK_STREAM, except it also checks combination of MSG_TRUNC
  and MSG_PEEK.

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

Nice cleanup, LGTM, but I'd like a comment from Bobby.

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