diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-08 11:33:54 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-08 11:33:54 -0400 |
| commit | 0cb2a7ee0c6300415e4265cabb1f3007b8519c58 (patch) | |
| tree | 076f8c377bd377173bdcbccee2aad08f82996d69 /scripts/browse-project.py | |
| parent | 9d484f295d96bf8d28d889df6274439efd5e4b55 (diff) | |
| download | open-iov-0cb2a7ee0c6300415e4265cabb1f3007b8519c58.tar.gz open-iov-0cb2a7ee0c6300415e4265cabb1f3007b8519c58.zip | |
vgsp-sema: keep push-buffer base discovery alive until the CE windows drain (ISSUE-0001)
svc_pb_discover() ran with a flat 12-pass budget for the whole boot and
then retired, even when a registered CE channel had no content-discovered
push-buffer base yet. A channel that appeared after the budget was spent
(including one reappearing with a new client session) then had no paired
window, so every push went through the slower per-page rescue and the
userspace watcher pin stream.
Stop the pass only after SVC_PB_IDLE_PASSES consecutive passes with no
new base AND with every registered CE channel either paired or having a
base recorded for its release slot, with a hard cap (SVC_PB_PASS_MAX) so
a channel that genuinely has no base page cannot scan forever. The 3 s
rate limit and chunked walk keep the service thread responsive; the
per-pass log now carries the idle count.
Evidence: ISSUE-0001; v2-r1 counter freeze (pb=6/12, see
backups/evidence-20261002-victory/11-hostdmesg-v2-r1.log) and the SA-STALL
class where the CE window was reached only after discovery had stopped.
Diffstat (limited to 'scripts/browse-project.py')
0 files changed, 0 insertions, 0 deletions
