On Mon, Jul 8, 2024 at 3:58 AM Yunsheng Lin <linyunsheng@xxxxxxxxxx> wrote: > > On 2024/7/8 1:12, Alexander Duyck wrote: > > ... > > > The issue is the dependency mess that has been created with patch 11 > > in the set. Again you are conflating patches which makes this really > > hard to debug or discuss as I make suggestions on one patch and you > > claim it breaks things that are really due to issues in another patch. > > So the issue is you included this header into include/linux/sched.h > > which is included in linux/mm_types.h. So what happens then is that > > you have to include page_frag_cache.h *before* you can include the > > bits from mm_types.h > > > > What might make more sense to solve this is to look at just moving the > > page_frag_cache into mm_types_task.h and then having it replace the > > page_frag struct there since mm_types.h will pull that in anyway. That > > way sched.h can avoid having to pull in page_frag_cache.h. > > It seems the above didn't work either, as asm-offsets.c does depend on > mm_types_task.h too. > > In file included from ./include/linux/mm.h:16, > from ./include/linux/page_frag_cache.h:10, > from ./include/linux/mm_types_task.h:11, > from ./include/linux/mm_types.h:5, > from ./include/linux/mmzone.h:22, > from ./include/linux/gfp.h:7, > from ./include/linux/slab.h:16, > from ./include/linux/resource_ext.h:11, > from ./include/linux/acpi.h:13, > from ./include/acpi/apei.h:9, > from ./include/acpi/ghes.h:5, > from ./include/linux/arm_sdei.h:8, > from arch/arm64/kernel/asm-offsets.c:10: > ./include/linux/mmap_lock.h: In function ‘mmap_assert_locked’: > ./include/linux/mmap_lock.h:65:23: error: invalid use of undefined type ‘const struct mm_struct’ > 65 | rwsem_assert_held(&mm->mmap_lock); Do not include page_frag_cache.h in mm_types_task.h. Just move the struct page_frag_cache there to replace struct page_frag.