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, Vlastimil