Skip to content

refactor: drop the unused per-lcore RCU persistent flag - #229

Merged
w180112 merged 1 commit into
masterfrom
refactor/drop-rcu-persistent-flag
Oct 9, 2026
Merged

w180112 merged 1 commit into
masterfrom
refactor/drop-rcu-persistent-flag

Conversation

@w180112

@w180112 w180112 commented Oct 9, 2026

Copy link
Copy Markdown
Member

Summary

  • The per-lcore RCU "persistent" flag's getter fast path no longer exists. In production the control TX path (wan_ctrl_tx / lan_ctrl_tx) always read the flag as FALSE, so removing it leaves behavior unchanged.
  • Unit tests no longer set the flag directly; init_ccb() now builds and registers a real pdump_rcu (mirroring src/init.c), so the ctrl TX path in tests exercises the actual online -> tx_burst -> quiescent -> offline sequence instead of skipping it via the flag.
  • Rewrote the stale phase16 e2e header comment to describe what the phase tests today.

Testing

  • make test: 2394/2394 passed
  • make all: succeeded
  • e2e: 198/198 passed

Note: two node teardown crashes were observed during that e2e run; they also reproduce on master without this change and are being fixed separately.

🤖 Generated with Claude Code

Remove fastrg_rcu_persistent[RTE_MAX_LCORE] and its getter fast path.
The flag was only ever read by the ctrl TX path (wan_ctrl_tx /
lan_ctrl_tx), and ctrl_thread never calls fastrg_rcu_dp_register, so
in production the flag was always FALSE and the rcu_toggle condition
there already reduced to `lcore_id != LCORE_ID_ANY`. Behavior is
unchanged.

Unit tests no longer set the flag directly; instead init_ccb() now
builds and registers a real pdump_rcu (mirroring src/init.c), so the
ctrl TX path in tests exercises the actual online -> tx_burst ->
quiescent -> offline sequence instead of skipping it via the flag.
free_ccb() releases the rcu memory accordingly. No test cases were
added or changed, only the setup/teardown mechanics.

Also rewrites the stale phase16 e2e header comment, which still
described the removed getter fast path and an outdated
SetSubscriberCount reallocation behavior.

Test results: make test 2394/2394 passed, make all succeeded, e2e
198/198 passed (44/44 phases). Two node teardown crashes (SIGSEGV /
SIGABRT in glibc malloc_consolidate) were observed during the e2e run
at the same two steps where a pre-existing binary also crashed before
this change; they are unrelated to this refactor and are tracked
separately.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@w180112
w180112 merged commit 0352426 into master Oct 9, 2026
9 checks passed
@w180112
w180112 deleted the refactor/drop-rcu-persistent-flag branch October 9, 2026 04:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant