aboutgitcodebugslistschat
path: root/contrib/qemu/git:
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2026-05-28 15:02:11 +1000
committerStefano Brivio <sbrivio@redhat.com>2026-06-04 06:35:26 +0200
commit4ccb2eebaa024a42cc4d5ba0112ade67666a3446 (patch)
treed38202b1573181658fcf95b2976feb091eca3303 /contrib/qemu/git:
parentcd61ad02d4181e8fa34e2bcb8f8436fd9a64714b (diff)
downloadpasst-4ccb2eebaa024a42cc4d5ba0112ade67666a3446.tar
passt-4ccb2eebaa024a42cc4d5ba0112ade67666a3446.tar.gz
passt-4ccb2eebaa024a42cc4d5ba0112ade67666a3446.tar.bz2
passt-4ccb2eebaa024a42cc4d5ba0112ade67666a3446.tar.lz
passt-4ccb2eebaa024a42cc4d5ba0112ade67666a3446.tar.xz
passt-4ccb2eebaa024a42cc4d5ba0112ade67666a3446.tar.zst
passt-4ccb2eebaa024a42cc4d5ba0112ade67666a3446.zip
tcp_splice: Simplify / correct OUT_WAIT flag handling
We set the OUT_WAIT flag if we stop forwarding due to EAGAIN, but there's still data in the pipe. That ensures we wake up when the output socket has room to drain the pipe into. We clear the OUT_WAIT flag when we complete forwarding on an EPOLLOUT event, but that's not quite right. Even though it's called on an EPOLLOUT, tcp_splice_forward() could, in principle empty the pipe, but also read enough new data from the other side to fill it again. That would set OUT_WAIT internally, but it would be cleared after returning meaning we could miss a necessary wakeup. The condition on whether we need write side wakeups is actually fairly simple: we need them if and only if we return to the main loop with data in the pipe. Maintain that in a single place - right after we exit the forwarding loop in tcp_splice_forward(). Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'contrib/qemu/git:')
0 files changed, 0 insertions, 0 deletions