On Sat, Jan 17, 2026 at 10:05:18PM +0800, Boqun Feng wrote: > On Sat, Jan 17, 2026 at 01:29:25PM +0000, Alice Ryhl wrote: > > On Sat, Jan 17, 2026 at 09:11:49PM +0800, Boqun Feng wrote: > > > In Rcu + RcuOld design, RcuBox is just a Box > > > because these two pointer types handle reclaim + accesses. > > > > How would that work? Dropping my RcuBox<_> must use kfree_rcu() or > > synchronize_rcu() or it is unsound. So it can't just be a Box. > > > > RcuOld<P: ForeignOwnable> will call synchronize_rcu() before dropping > `P`. And I think we can have an asynchronous drop pointer type like > `RcuOld<P, Async>` that requires `P` is a type like `Box<HasRcuHead>`,
One blocker on that is Drop impls cannot be specialized. We probably need a different pointer type like RcuOldAsync... Regards, Boqun > and the drop of `RcuOld<Box<HasRcuHead>, Async>` would be `call_rcu()` > or `kfree_rcu()`. > > Regards, > Boqun > > > Alice

