On Tue, May 13, 2025 at 10:46:35AM +0200, Paolo Abeni wrote:
On 5/7/25 5:14 PM, Konstantin Shkolnyy wrote:
These tests:
"SOCK_STREAM ioctl(SIOCOUTQ) 0 unsent bytes"
"SOCK_SEQPACKET ioctl(SIOCOUTQ) 0 unsent bytes"
output: "Unexpected 'SIOCOUTQ' value, expected 0, got 64 (CLIENT)".
They test that the SIOCOUTQ ioctl reports 0 unsent bytes after the data
have been received by the other side. However, sometimes there is a delay
in updating this "unsent bytes" counter, and the test fails even though
the counter properly goes to 0 several milliseconds later.
The delay occurs in the kernel because the used buffer notification
callback virtio_vsock_tx_done(), called upon receipt of the data by the
other side, doesn't update the counter itself. It delegates that to
a kernel thread (via vsock->tx_work). Sometimes that thread is delayed
more than the test expects.
Change the test to poll SIOCOUTQ until it returns 0 or a timeout occurs.
Signed-off-by: Konstantin Shkolnyy <k...@linux.ibm.com>
Could you please provide a suitable fixes tag?
No need to repost, just reply here.
I always get confused whether to use Fixes tags for tests, but I saw
this patch target `net`, so it makes sense. BTW IMHO it can go
eventually through net-next, which is the target tree I usually use for
new tests but also test fixes.
In any case, the tag should be this one:
Fixes: 18ee44ce97c1 ("test/vsock: add ioctl unsent bytes test")
Thanks,
Stefano