Skip to content

Replace isc_qsbr with liburcu-qsbr

Tony Finch requested to merge fanf-urcu-qp into main

The qp-trie has been refactored to use call_rcu() for safe memory reclamation.

This change makes cleanup more asynchronous, so it also required some fixes elsewhere:

  • The cross-links between managed zones and their loops and timers have been made more accurate
  • I have put an rcu_barrier() in isc_mem_destroy() which I hope will ensure asynchronous cleanups are completed before shutdown
  • I have added a small call_rcu() wrapper to help thread sanitizer understand it
  • The tsan CI jobs have been adjusted to suppress complaints about rcu_barrier() which can't be fixed with a wrapper

When testing a million-zone configuration,

version peak rss cpu usage
9.19.11 11387820 120s
main 11644664 157s
this 10936148 120s

Closes #3936 (closed)

Closes #4019 (closed)

Edited by Tony Finch

Merge request reports