On Thu, Jun 20, 2024 at 10:42 PM <alexs@xxxxxxxxxx> wrote: > > From: Alex Shi <alexs@xxxxxxxxxx> > > According to Metthew's plan, the page descriptor will be replace by a 8 > bytes mem_desc on destination purpose. > https://lore.kernel.org/lkml/YvV1KTyzZ+Jrtj9x@xxxxxxxxxxxxxxxxxxxx/ > > Here is a implement on z3fold to replace page descriptor by zpdesc, > which is still overlay on struct page now. but it's a step move forward > above destination. > > To name the struct zpdesc instead of z3fold_desc, since there are 3 zpool > usages under zswap, zbud, z3fold, zsmalloc. It looks like we may extend the > zpdesc to zbud and zsmalloc, combined their usage into one. Please do not focus your development efforts on z3fold. We really want to deprecate/remove it, as well as zbud eventually. See [1]. For zsmalloc, there is already an ongoing effort to split zsdesc from struct page [2]. [1]https://lore.kernel.org/lkml/CAJD7tkbRF6od-2x_L8-A1QL3=2Ww13sCj4S3i4bNndqF+3+_Vg@xxxxxxxxxxxxxx/ [2]https://lore.kernel.org/lkml/20230713042037.980211-1-42.hyeyoo@xxxxxxxxx/ > > For zpdesc(page), z3fold just uses the 5th member zppage_flag, which > match with page.private. Potentially uses the first member flags for > headless PG_locked, list_head lru and page.mapping|PAGE_MAPPING_MOVABLE > for page migration. > > This patachset could save 26Kbyetes z3fold.o size, basely saving come > from the page to folio conversion. > > Thanks a lot! > Alex > > Alex Shi (15): > mm/z3fold: add zpdesc struct and helper and use them in > z3fold_page_isolate > mm/z3fold: use zpdesc in z3fold_page_migrate > mm/z3fold: use zpdesc in z3fold_page_putback > mm/z3fold: use zpdesc in get/put_z3fold_header funcs > mm/z3fold: use zpdesc in init_z3fold_page > mm/z3fold: use zpdesc in free_z3fold_page > mm/z3fold: convert page to zpdesc in __release_z3fold_page > mm/z3fold: use zpdesc free_pages_work > mm/z3fold: use zpdesc in z3fold_compact_page and do_compact_page > mm/z3fold: use zpdesc in __z3fold_alloc > mm/z3fold: use zpdesc in z3fold_alloc > mm/z3fold: use zpdesc in free_z3fold_page and z3fold_free > mm/z3fold: use zpdesc in z3fold_map/z3fold_unmap > mm/z3fold: introduce __zpdesc_set_movable > mm/z3fold: introduce __zpdesc_clear_movable > > mm/z3fold.c | 190 +++++++++++++++++++++++++++------------------------- > mm/zpdesc.h | 87 ++++++++++++++++++++++++ > 2 files changed, 184 insertions(+), 93 deletions(-) > create mode 100644 mm/zpdesc.h > > -- > 2.43.0 > >