Change vsock's lingerning to wait on close() until all data is sent, i.e. until workers picked all the packets for processing.
Changes in v6: - Make vsock_wait_sent() return bool, parametrize enable_so_linger() with timeout, don't open code DIV_ROUND_UP [Stefano] - Link to v5: https://lore.kernel.org/r/20250521-vsock-linger-v5-0-94827860d...@rbox.co Changes in v5: - Move unsent_bytes fetching logic to utils.c - Add a helper for enabling SO_LINGER - Accommodate for close() taking a long time for reasons unrelated to lingering - Separate and redo the testcase [Stefano] - Enrich the comment [Stefano] - Link to v4: https://lore.kernel.org/r/20250501-vsock-linger-v4-0-beabbd8a0...@rbox.co Changes in v4: - While in virtio, stick to virtio_transport_unsent_bytes() [Stefano] - Squash the indentation reduction [Stefano] - Pull SOCK_LINGER check into vsock_linger() [Stefano] - Don't explicitly pass sk->sk_lingertime [Stefano] - Link to v3: https://lore.kernel.org/r/20250430-vsock-linger-v3-0-ddbe73b53...@rbox.co Changes in v3: - Set "vsock/virtio" topic where appropriate - Do not claim that Hyper-V and VMCI ever lingered [Stefano] - Move lingering to af_vsock core [Stefano] - Link to v2: https://lore.kernel.org/r/20250421-vsock-linger-v2-0-fe9febd64...@rbox.co Changes in v2: - Comment that some transports do not implement unsent_bytes [Stefano] - Reduce the indentation of virtio_transport_wait_close() [Stefano] - Do not linger on shutdown(), expand the commit messages [Paolo] - Link to v1: https://lore.kernel.org/r/20250407-vsock-linger-v1-0-1458038e3...@rbox.co Changes in v1: - Do not assume `unsent_bytes()` is implemented by all transports [Stefano] - Link to v0: https://lore.kernel.org/netdev/df2d51fd-03e7-477f-8aea-938446f47...@rbox.co/ Signed-off-by: Michal Luczaj <m...@rbox.co> --- Michal Luczaj (5): vsock/virtio: Linger on unsent data vsock: Move lingering logic to af_vsock core vsock/test: Introduce vsock_wait_sent() helper vsock/test: Introduce enable_so_linger() helper vsock/test: Add test for an unexpectedly lingering close() include/net/af_vsock.h | 1 + net/vmw_vsock/af_vsock.c | 33 +++++++++++++ net/vmw_vsock/virtio_transport_common.c | 21 +-------- tools/testing/vsock/util.c | 38 +++++++++++++++ tools/testing/vsock/util.h | 2 + tools/testing/vsock/vsock_test.c | 83 +++++++++++++++++++++++---------- 6 files changed, 134 insertions(+), 44 deletions(-) --- base-commit: f44092606a3f153bb7e6b277006b1f4a5b914cfc change-id: 20250304-vsock-linger-9026e5f9986c Best regards, -- Michal Luczaj <m...@rbox.co>