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

Harry Yoo
2025-07-02T10:36:03Z

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@nvidia.com>
> Signed-off-by: David Hildenbrand <david@redhat.com>
> ---

> +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

?

> + return NULL;
> +}
> +
> /**
> * isolate_movable_ops_page - isolate a movable_ops page for migration
> * @page: The page.

Otherwise LGTM.

--
Cheers,
Harry / Hyeonggon