Re: [PATCH v1 19/29] mm: stop storing migration_ops in page->mapping

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jul 02, 2025 at 01:04:05PM +0200, David Hildenbrand wrote:
> On 02.07.25 12:34, Harry Yoo wrote:
> > On Mon, Jun 30, 2025 at 03:00:00PM +0200, David Hildenbrand wrote:
> > > ... instead, look them up statically based on the page type. Maybe in the
> > > future we want a registration interface? At least for now, it can be
> > > easily handled using the two page types that actually support page
> > > migration.
> > > 
> > > The remaining usage of page->mapping is to flag such pages as actually
> > > being movable (having movable_ops), which we will change next.
> > > 
> > > Reviewed-by: Zi Yan <ziy@xxxxxxxxxx>
> > > Signed-off-by: David Hildenbrand <david@xxxxxxxxxx>
> > > ---
> > 
> > > +static const struct movable_operations *page_movable_ops(struct page *page)
> > > +{
> > > +	VM_WARN_ON_ONCE_PAGE(!page_has_movable_ops(page), page);
> > > +
> > > +	/*
> > > +	 * If we enable page migration for a page of a certain type by marking
> > > +	 * it as movable, the page type must be sticky until the page gets freed
> > > +	 * back to the buddy.
> > > +	 */
> > > +#ifdef CONFIG_BALLOON_COMPACTION
> > > +	if (PageOffline(page))
> > > +		/* Only balloon compaction sets PageOffline pages movable. */
> > > +		return &balloon_mops;
> > > +#endif /* CONFIG_BALLOON_COMPACTION */
> > > +#if defined(CONFIG_ZSMALLOC) && defined(CONFIG_COMPACTION)
> > > +	if (PageZsmalloc(page))
> > > +		return &zsmalloc_mops;
> > > +#endif /* defined(CONFIG_ZSMALLOC) && defined(CONFIG_COMPACTION) */
> > 
> > What happens if:
> >    CONFIG_ZSMALLOC=y
> >    CONFIG_TRANSPARENT_HUGEPAGE=n
> >    CONFIG_COMPACTION=n
> >    CONFIG_MIGRATION=y
> 
> Pages are never allocated from ZONE_MOVABLE/CMA and

I don't understand how that's true, neither zram nor zsmalloc clears
__GFP_MOVABLE when CONFIG_COMPACTION=n?

...Or perhaps I'm still missing some pieces ;)
 
> are not marked as having movable_ops, so we never end up in this function.

Right.

> See how zsmalloc.c deals with CONFIG_COMPACTION, especially how
> SetZsPageMovable() is a NOP without it.

Right.

Now I see what I was missing in the previous reply.
Thanks!

Please feel free to add:

Reviewed-by: Harry Yoo <harry.yoo@xxxxxxxxxx>

-- 
Cheers,
Harry / Hyeonggon




[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux