On Tue, Jan 31, 2023 at 05:00:32AM +0000, Matthew Wilcox wrote: > On Mon, Jan 30, 2023 at 08:47:58PM -0800, Jakub Kicinski wrote: > > kinda random thought but since we're touching this area - could we > > perhaps move the definition of struct bio_vec and trivial helpers > > like this into a new header? bvec.h pulls in mm.h which is a right > > behemoth :S > > I bet we can drop mm.h now. It was originally added for nth_page() > in 3d75ca0adef4 but those were all removed by b8753433fc61. > > A quick smoke test on my default testing config doesn't find any > problems. Let me send a patch and see if the build bots complain. Disappointingly, it doesn't really change anything. 1134 files depend on mm.h both before and after [1]. Looks like it's due to arch/x86/include/asm/cacheflush.h pulling in linux/mm.h, judging by the contents of .build_test_kernel-x86_64/net/ipv6/.inet6_hashtables.o.cmd. But *lots* of header files pull in mm.h, including scatterlist.h, vt_kern.h, net.h, nfs_fs.h, sunrpc/svc.h and security.h. I suppose it may cut down on include loops to drop it here, so I'm still in favour of the patch I posted, but this illustrates how deeply entangled our headers still are. [1] find .build_test_kernel-x86_64/ -name '.*.cmd' |xargs grep 'include/linux/mm.h' |wc -l