Re: [PATCH net-next 1/2] vsock: Linger on unsent data

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

 



On Wed, Apr 16, 2025 at 02:36:52PM +0200, Michal Luczaj wrote:
On 4/11/25 12:32, Stefano Garzarella wrote:
On Thu, Apr 10, 2025 at 12:51:48PM +0200, Paolo Abeni wrote:
On 4/7/25 8:41 PM, Michal Luczaj wrote:
Change the behaviour of a lingering close(): instead of waiting for all
data to be consumed, block until data is considered sent, i.e. until worker
picks the packets and decrements virtio_vsock_sock::bytes_unsent down to 0.

I think it should be better to expand the commit message explaining the
rationale.

Sure, will do.

Do linger on shutdown() just as well.

Why? Generally speaking shutdown() is not supposed to block. I think you
should omit this part.

I thought the same, but discussing with Michal we discovered this on
socket(7) man page:

   SO_LINGER
          Sets or gets the SO_LINGER option.  The argument is a
          linger structure.

              struct linger {
                  int l_onoff;    /* linger active */
                  int l_linger;   /* how many seconds to linger for */
              };

          When enabled, a close(2) or shutdown(2) will not return
          until all queued messages for the socket have been
          successfully sent or the linger timeout has been reached.
          Otherwise, the call returns immediately and the closing is
          done in the background.  When the socket is closed as part
          of exit(2), it always lingers in the background.

In AF_VSOCK we supported SO_LINGER only on close(), but it seems that
shutdown must also do it from the manpage.

Even though shutdown() lingering isn't universally implemented :/

If I'm reading the code correctly, TCP lingers only on close(). So,
following the man page on the one hand, mimicking TCP on the other?


If this is the case, I would say mimic TCP for now.

Thanks,
Stefano





[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux