On Thu, 2024-08-08 at 20:37 +0800, Yunsheng Lin wrote: > Inspired by [1], move the page fragment allocator from page_alloc > into its own c file and header file, as we are about to make more > change for it to replace another page_frag implementation in > sock.c > > As this patchset is going to replace 'struct page_frag' with > 'struct page_frag_cache' in sched.h, including page_frag_cache.h > in sched.h has a compiler error caused by interdependence between > mm_types.h and mm.h for asm-offsets.c, see [2]. So avoid the compiler > error by moving 'struct page_frag_cache' to mm_types_task.h as > suggested by Alexander, see [3]. > > 1. https://lore.kernel.org/all/20230411160902.4134381-3-dhowells@xxxxxxxxxx/ > 2. https://lore.kernel.org/all/15623dac-9358-4597-b3ee-3694a5956920@xxxxxxxxx/ > 3. https://lore.kernel.org/all/CAKgT0UdH1yD=LSCXFJ=YM_aiA4OomD-2wXykO42bizaWMt_HOA@xxxxxxxxxxxxxx/ > CC: David Howells <dhowells@xxxxxxxxxx> > CC: Alexander Duyck <alexander.duyck@xxxxxxxxx> > Signed-off-by: Yunsheng Lin <linyunsheng@xxxxxxxxxx> > --- > include/linux/gfp.h | 22 --- > include/linux/mm_types.h | 18 --- > include/linux/mm_types_task.h | 18 +++ > include/linux/page_frag_cache.h | 31 ++++ > include/linux/skbuff.h | 1 + > mm/Makefile | 1 + > mm/page_alloc.c | 136 ---------------- > mm/page_frag_cache.c | 145 ++++++++++++++++++ > .../selftests/mm/page_frag/page_frag_test.c | 2 +- > 9 files changed, 197 insertions(+), 177 deletions(-) > create mode 100644 include/linux/page_frag_cache.h > create mode 100644 mm/page_frag_cache.c > > ... > diff --git a/include/linux/page_frag_cache.h b/include/linux/page_frag_cache.h > new file mode 100644 > index 000000000000..a758cb65a9b3 > --- /dev/null > +++ b/include/linux/page_frag_cache.h > @@ -0,0 +1,31 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > + > +#ifndef _LINUX_PAGE_FRAG_CACHE_H > +#define _LINUX_PAGE_FRAG_CACHE_H > + > +#include <linux/log2.h> > +#include <linux/types.h> > +#include <linux/mm_types_task.h> > + Minor nit. These should usually be in alphabetical order. So mm_types_task.h should be between log2.h and types.h.