diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-09 21:44:24 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-09 21:44:24 -0400 |
| commit | 7308a66e2670fc19d411fba1cc7e16569170a76d (patch) | |
| tree | 0c82ecf65546dd0aba8fbb34a0d7f1e2846d4dc7 /wiki | |
| parent | b021abb242664d0c4cb2492c5d73aa7bdcdee4c4 (diff) | |
| download | open-iov-7308a66e2670fc19d411fba1cc7e16569170a76d.tar.gz open-iov-7308a66e2670fc19d411fba1cc7e16569170a76d.zip | |
vgsp-sema: gate the pool-residue rule on the first translated pool read, not submissions (ISSUE-0002)
r70 c3 proved the submissions gate wrong: the content-rescue path consumes
entry 0 (submissions++) while the pool page is still untranslated (rrc=-2),
then the scanner's pin batch rewinds last_get (SVC_PIN_REWIND) and the entry
is decoded again - this time with cur=134 residue, pay=1, but submissions
already 1, so the residue branch was skipped, the hold branch deferred the
release, and the pending retry dropped it (payload <= cur). The client's
first tracker wait then never completed.
Replace the freshness gate with a per-channel pool_rel_seen flag set on the
first translated pool read (rrc2 == 0), persisted in the pump write-back. The
residue rule now fires exactly on that first read, exactly once per channel
per session.
Diffstat (limited to 'wiki')
0 files changed, 0 insertions, 0 deletions
