On Thu, Dec 05, 2024 at 05:49:53PM +0000, Matthew Wilcox (Oracle) wrote: > From: Alex Shi <alexs@xxxxxxxxxx> > > Convert SetZsPageMovable() to use zpdesc, and then remove unused > funcs: get_next_page()/get_first_page()/is_first_page(). > > Originally-by: Hyeonggon Yoo <42.hyeyoo@xxxxxxxxx> > Signed-off-by: Alex Shi <alexs@xxxxxxxxxx> > --- Looks good to me, Hyeonggon Yoo <42.hyeyoo@xxxxxxxxx> > mm/zsmalloc.c | 33 +++++---------------------------- > 1 file changed, 5 insertions(+), 28 deletions(-) > > diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c > index bf1db07c58cf..16e3d6705563 100644 > --- a/mm/zsmalloc.c > +++ b/mm/zsmalloc.c > @@ -470,11 +470,6 @@ static DEFINE_PER_CPU(struct mapping_area, zs_map_area) = { > .lock = INIT_LOCAL_LOCK(lock), > }; > > -static __maybe_unused int is_first_page(struct page *page) > -{ > - return PagePrivate(page); > -} > - > static inline bool is_first_zpdesc(struct zpdesc *zpdesc) > { > return PagePrivate(zpdesc_page(zpdesc)); > @@ -491,14 +486,6 @@ static inline void mod_zspage_inuse(struct zspage *zspage, int val) > zspage->inuse += val; > } > > -static inline struct page *get_first_page(struct zspage *zspage) > -{ > - struct page *first_page = zpdesc_page(zspage->first_zpdesc); > - > - VM_BUG_ON_PAGE(!is_first_page(first_page), first_page); > - return first_page; > -} > - > static struct zpdesc *get_first_zpdesc(struct zspage *zspage) > { > struct zpdesc *first_zpdesc = zspage->first_zpdesc; > @@ -783,16 +770,6 @@ static struct zspage *get_zspage(struct zpdesc *zpdesc) > return zspage; > } > > -static struct page *get_next_page(struct page *page) > -{ > - struct zspage *zspage = get_zspage(page_zpdesc(page)); > - > - if (unlikely(ZsHugePage(zspage))) > - return NULL; > - > - return (struct page *)page->index; > -} > - > static struct zpdesc *get_next_zpdesc(struct zpdesc *zpdesc) > { > struct zspage *zspage = get_zspage(zpdesc); > @@ -1955,13 +1932,13 @@ static void init_deferred_free(struct zs_pool *pool) > > static void SetZsPageMovable(struct zs_pool *pool, struct zspage *zspage) > { > - struct page *page = get_first_page(zspage); > + struct zpdesc *zpdesc = get_first_zpdesc(zspage); > > do { > - WARN_ON(!trylock_page(page)); > - __SetPageMovable(page, &zsmalloc_mops); > - unlock_page(page); > - } while ((page = get_next_page(page)) != NULL); > + WARN_ON(!zpdesc_trylock(zpdesc)); > + __zpdesc_set_movable(zpdesc, &zsmalloc_mops); > + zpdesc_unlock(zpdesc); > + } while ((zpdesc = get_next_zpdesc(zpdesc)) != NULL); > } > #else > static inline void zs_flush_migration(struct zs_pool *pool) { } > -- > 2.45.2 > >