On 2024/2/1 06:40, Vlastimil Babka wrote: > On 1/31/24 23:25, Yosry Ahmed wrote: >> On Wed, Jan 31, 2024 at 2:20 PM Steven Rostedt <rostedt@xxxxxxxxxxx> wrote: >>> >>> I was looking into moving eventfs_inode into a slab, and after cutting and >>> pasting the tracefs allocator: >>> >>> tracefs_inode_cachep = kmem_cache_create("tracefs_inode_cache", >>> sizeof(struct tracefs_inode), >>> 0, (SLAB_RECLAIM_ACCOUNT| >>> SLAB_MEM_SPREAD| >>> SLAB_ACCOUNT), >>> init_once); >>> >>> I figured I should know what those slab flags mean. I also looked at what >>> others in fs use for their slabs. The above is rather common (which I >>> probably just copied from another file system), but I wanted to know what >>> they are for. >>> >>> When I got to SLAB_MEM_SPREAD, I found that it's a common flag and there's >>> a lot of caches that just set that and nothing else. >>> >>> But I couldn't find how it was used. >>> >>> Then I found this commit: >>> >>> 16a1d968358a ("mm/slab: remove mm/slab.c and slab_def.h") >>> >>> Which I think removed the only use case of SLAB_MEM_SPREAD. >>> >>> $ git grep SLAB_MEM_SPREAD mm >>> mm/slab.h: SLAB_MEM_SPREAD | \ >>> >>> That's all I find in the mm directory. >>> >>> Is it obsolete now? Can we delete it? Maybe there's other SLAB_* flags that >>> are no longer used. I don't know, I haven't audited them. >> >> Perhaps cpuset_do_slab_mem_spread() as well. > > Yep, good find. Show how obscure mm/slab.c was in the end :) > > CCing a few more new people who did slab changes recently, who'd like some > low hanging fruit of negative diffcount? :) Thanks for CCing, I can prepare the patch to do it. IIUC, what I need to do is: 1. delete SLAB_MEM_SPREAD and all its uses. 2. cpuset_do_slab_mem_spread() is not used anymore, should we keep the interface? Since it's the interface exported by cgroup-v1 "cpuset.memory_spread_slab".