On Wed, Dec 01, 2021 at 07:14:41PM +0100, Vlastimil Babka wrote: > From: "Matthew Wilcox (Oracle)" <willy@xxxxxxxxxxxxx> > > Make struct slab independent of struct page. It still uses the > underlying memory in struct page for storing slab-specific data, > but slab and slub can now be weaned off using struct page directly. > Some of the wrapper functions (slab_address() and slab_order()) > still need to cast to struct folio, but this is a significant > disentanglement. > > [ vbabka@xxxxxxx: Rebase on folios, use folio instead of page where possible. > > Do not duplicate flags field in struct slab, instead make the related > accessors go through slab_folio(). For testing pfmemalloc use the > folio_*_active flag accessors directly so the PageSlabPfmemalloc wrappers can > be removed later. > > Make folio_slab() expect only folio_test_slab() == true folios and > virt_to_slab() return NULL when folio_test_slab() == false. > > Move struct slab to mm/slab.h. > > Don't represent with struct slab pages that are not true slab pages, but > just a compound page obtained directly rom page allocator (with large > kmalloc() for SLUB and SLOB). ] > > Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> > Signed-off-by: Vlastimil Babka <vbabka@xxxxxxx> Acked-by: Johannes Weiner <hannes@xxxxxxxxxxx>