Extend rcutree.do_rcu_barrier to drain kfree_rcu() batches and per-CPU SLUB sheaves as well as ordinary callbacks. This strengthens the documented test interface, implementing the follow-up proposed when kvfree_rcu_barrier() was added in 2024:
https://lore.kernel.org/all/[email protected]/ While testing bcachefs performance changes, ktest's /proc/allocinfo check falsely reported leaks despite repeated hook writes and a 20-second wait. An earlier prototype let the same unmodified workload pass: eight checkpoints in one VM, after 50 through 400 option changes, found zero retained reconcile_scan objects. The original kernel's retained count eventually fell as a sheaf filled; no unbounded growth or OOM was observed. Following Paul's v2 review, retain the entry sequence snapshot and check it after the unconditional kvfree_rcu() drain. If complete, retain smp_mb() and skip the final ordinary barrier; otherwise, call rcu_barrier(). An unrelated ordinary barrier cannot justify skipping the deferred-free drain. The start-rate throttle remains unconditional. The documentation now scopes completion to work queued before the request, without preventing new concurrent work. This can avoid an extra barrier operation: v2's trailing rcu_barrier() takes a fresh snapshot and need not reuse the internal barrier. No elapsed-time improvement has been measured. Exact-v3 builds and interface smoke checks passed in four fresh two-vCPU TREE_RCU VMs: two with kvfree batching and two with SLUB_TINY (unbatched). Each completed three true requests, remained idle after false, and rejected invalid input with EINVAL. Full kernel logs showed no WARN, oops, panic or RCU-stall diagnostics. The v1/v2 private-cache completion and ordinary-callback regression tests have not been rerun on v3. These smoke tests neither prove concurrency/weak-memory correctness nor force the guarded fallback. v2: https://lore.kernel.org/all/[email protected]/ Matthias Goergens (1): rcu: make userspace barrier hook drain kvfree_rcu work .../admin-guide/kernel-parameters.txt | 9 ++++-- kernel/rcu/tree.c | 30 ++++++++++++------- 2 files changed, 26 insertions(+), 13 deletions(-) -- 2.55.0

