On Sun, 2024-04-07 at 21:08 +0800, Yunsheng Lin wrote: > Inspired by [1], but use free_unref_page() to replace free_the_page() > instead of __free_pages(), use VM_BUG_ON() to catch that we can use > free_unref_page() directly, also add its own header file. Instead of doing this all as one patch it would be better to split this into 2. Make the refactor first, and then move the code. Don't do it all in one patch. Adding a refactor that changes out functions called in addition to moving the functions makes it very difficult to provide useful feedback and review. One of the big things with free_unref_page vx free_the_page is a check to see how costly it is to free the page. Right now the page frags are on the verge of crossing that threshold with defaulting to order 3 pages. > As the API is only used by the networking, it may make sense to > move it to the networking directory like the page_pool does in the > future if we can make the free_unref_page() callable outside of the > mm subsystem. And we can utilize that to decouple the 'struct page' > in the networking subsystem in the future. > > 1. https://lore.kernel.org/all/20230411160902.4134381-3-dhowells@xxxxxxxxxx/ The problem with moving this out to networking is the fact that this is memory allocation. In my opinion it would better for it to live there. > CC: David Howells <dhowells@xxxxxxxxxx> > Signed-off-by: Yunsheng Lin <linyunsheng@xxxxxxxxxx> > --- > include/linux/gfp.h | 22 ----- > include/linux/mm_types.h | 18 ---- > include/linux/page_frag_cache.h | 47 ++++++++++ > include/linux/skbuff.h | 1 + > mm/Makefile | 1 + > mm/page_alloc.c | 136 ----------------------------- > mm/page_frag_cache.c | 149 ++++++++++++++++++++++++++++++++ > 7 files changed, 198 insertions(+), 176 deletions(-) > create mode 100644 include/linux/page_frag_cache.h > create mode 100644 mm/page_frag_cache.c I would add comments inline below about the changes you made but it is hard to keep them in any sort of context since what is contained in the "-" block is well spaced out from the "+" block.