Re: [PATCH v2 09/16] rcu/tree: Maintain separate array for vmalloc ptrs

From: Paul E. McKenney
Date: Mon Jun 22 2020 - 15:55:28 EST


On Mon, Jun 22, 2020 at 09:04:06PM +0200, Uladzislau Rezki wrote:
> > > >
> > > > Very good. When does kfree_rcu() and friends move out of kernel/rcu?
> > > >
> > > Do you mean to move the whole logic of kfree_rcu() from top to down to mm/?
> >
> > I do mean exactly that.
> >
> > That was my goal some years back when Rao Shoaib was making the first
> > attempt along these lines, and it remains my goal. After all, if this
> > effort is at all successful, the coupling between kfree_rcu() with
> > slab/slob/slub will become much tighter than that between kfree_rcu()
> > and RCU.
> >
> > There will need to be some additional RCU APIs used by kfree_rcu(),
> > for example, something to tell RCU how many blocks are awaiting a
> > grace period. But these are narrow and easily defined APIs.
> >
> I also think that k[v]free_rcu() should reside somewhere under "mm/".
> Currently they are defined as macros under "linux/rcupdate.h". So i
> am not sure if definitions should stay there or moved also.

I am not as worried about the high-level macros as I am about the code
that does the bulk of the work, but they should still move as well.
Otherwise, changes involving both the macros and the underlying
implementation are harder than needed.

> Implementation of the k[v]free_rcu() is under rcu/tree.c and for tiny
> variant is under rcutiny.h. It can be moved to the mm/slab_common.c
> or independent files can be created. I think, mm people should consult
> what is the best way to go :)
>
> Any thoughts on it?

I don't have any opinion on exactly where in mm the underlying
implementation code should go. You suggestion of mm/slab_common.c
seems fine to me. ;-)

Thanx, Paul