diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-09 22:11:03 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-09 22:11:03 -0400 |
| commit | 3d4777f614e31f3c3a4f2ce49b37054a10fd1fd3 (patch) | |
| tree | 1f465e13d15a47cd062dc558d5477f5db0f89936 /userspace/lib | |
| parent | 4c1266e620423a0870c68e2228dbdcf6b2597d29 (diff) | |
| download | open-iov-3d4777f614e31f3c3a4f2ce49b37054a10fd1fd3.tar.gz open-iov-3d4777f614e31f3c3a4f2ce49b37054a10fd1fd3.zip | |
vgsp-sema: rewind last_get on a fresh channel's second put drop (ISSUE-0002)
r73 c3 rank2: discovery read the previous session's residual put (67); the
pump consumed the live entries 0..1, the r48 resync handled the first drop,
but the guest's counter then settled at put=1 while last_get=2 and
userd_wait_fresh was already consumed. The loop condition last_get != put
then marched ~1023 slots the producer had not written, holding each stale
entry for the full CE grace (one fake release per 8 s) - the client looked
wedged and the exec timed out.
When a drop leaves the pump ahead of the producer on a channel with fewer
than half a ring of submissions, rewind last_get to put instead of marching.
A genuine ring wrap needs a full ring of submissions, so this cannot skip a
live entry.
Diffstat (limited to 'userspace/lib')
0 files changed, 0 insertions, 0 deletions
