Re: [RFC v1 0/5] Move kvfree_rcu() into SLAB

Vlastimil Babka
2024-12-12T10:30:42Z

On 12/10/24 17:40, Uladzislau Rezki (Sony) wrote:
> Hello!

Hi and thanks!

> This series is based on v6.12 kernel.

Could it be rebased to v6.13-rc1, which is a basis for most -next branches?
Right now patch 5 doesn't apply on v6.13-rc1.

Please also Cc all slab maintainers/reviewers.

> It is an attempt to move the kvfree_rcu()
> into MM from the kernel/rcu/ place. I split the series into a few patches so it
> is easier to follow a migration process.

I think this is not the best approach. The individual diffs are not easy to
follow because they copy code or delete code separately, and not move it in
a single commit. I get a much better overview when I diff the whole series
against baseline, then git highlights pure moves and local changes nicely.

Having moves recorded properly would also make it possible for "git blame
-C" to show changes that were made in the old file before the move, but with
copy and deletion in separate commits it doesn't work.
(but note it seems it doesn't work so great even if I squash everything to
one patch - were the functions reodered?)

And with this approach you also need the temporary changes.

What I think could work better is to do:
- preparatory changes in the existing location
- splitting out kvfree_rcu_init() and calling separately in start_kernel()
- renaming shrinkers
- adjusting the names passed to trace_rcu_...()
- maybe even adding the CONFIG_TINY_RCU guards even if redundant
- one big move of code between files, hopefully needing no or minimal
adjustments after the preparatory steps

Makes sense?

Thanks,
Vlastimil

> As a result of this series, the main functionality is located under MM.
>
> Uladzislau Rezki (Sony) (5):
> rcu/kvfree: Temporary reclaim over call_rcu()
> mm/slab: Copy main data structures of kvfree_rcu()
> mm/slab: Copy internal functions of kvfree_rcu()
> mm/slab: Copy a function of kvfree_rcu() initialization
> mm/slab: Move kvfree_rcu() into SLAB
>
> include/linux/slab.h | 1 +
> init/main.c | 1 +
> kernel/rcu/tree.c | 866 ------------------------------------------
> mm/slab_common.c | 875 +++++++++++++++++++++++++++++++++++++++++++
> 4 files changed, 877 insertions(+), 866 deletions(-)
>