Re: [PATCH v1 22/29] mm/page-flags: rename PAGE_MAPPING_MOVABLE to PAGE_MAPPING_ANON_KSM

Lorenzo Stoakes
2025-07-01T12:56:18Z

On Mon, Jun 30, 2025 at 03:00:03PM +0200, David Hildenbrand wrote:
> KSM is the only remaining user, let's rename the flag. While at it,
> adjust to remaining page -> folio in the doc.

Hm I wonder if we could just ideally have this be a separate flag rather than a
bitwise combination, however I bet there's code that does somehow rely on this.

I know for sure there's code that has to do a folio_test_ksm() on something
folio_test_anon()'d because the latter isn't sufficient.

But this is one for the future I guess :)

Nice: re change to folio, that is a nice cleanup based on fact you've now made
the per-page mapping op stuff not be part of this.

>
> Reviewed-by: Zi Yan <ziy@nvidia.com>
> Signed-off-by: David Hildenbrand <david@redhat.com>

LGTM, so:

Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>

> ---
> include/linux/page-flags.h | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
> index aa48b05536bca..abed972e902e1 100644
> --- a/include/linux/page-flags.h
> +++ b/include/linux/page-flags.h
> @@ -697,10 +697,10 @@ PAGEFLAG_FALSE(VmemmapSelfHosted, vmemmap_self_hosted)
> * folio->mapping points to its anon_vma, not to a struct address_space;
> * with the PAGE_MAPPING_ANON bit set to distinguish it. See rmap.h.
> *
> - * On an anonymous page in a VM_MERGEABLE area, if CONFIG_KSM is enabled,
> - * the PAGE_MAPPING_MOVABLE bit may be set along with the PAGE_MAPPING_ANON
> + * On an anonymous folio in a VM_MERGEABLE area, if CONFIG_KSM is enabled,
> + * the PAGE_MAPPING_ANON_KSM bit may be set along with the PAGE_MAPPING_ANON
> * bit; and then folio->mapping points, not to an anon_vma, but to a private
> - * structure which KSM associates with that merged page. See ksm.h.
> + * structure which KSM associates with that merged folio. See ksm.h.
> *
> * Please note that, confusingly, "folio_mapping" refers to the inode
> * address_space which maps the folio from disk; whereas "folio_mapped"
> @@ -714,9 +714,9 @@ PAGEFLAG_FALSE(VmemmapSelfHosted, vmemmap_self_hosted)
> * See mm/slab.h.
> */
> #define PAGE_MAPPING_ANON 0x1
> -#define PAGE_MAPPING_MOVABLE 0x2
> -#define PAGE_MAPPING_KSM (PAGE_MAPPING_ANON | PAGE_MAPPING_MOVABLE)
> -#define PAGE_MAPPING_FLAGS (PAGE_MAPPING_ANON | PAGE_MAPPING_MOVABLE)
> +#define PAGE_MAPPING_ANON_KSM 0x2
> +#define PAGE_MAPPING_KSM (PAGE_MAPPING_ANON | PAGE_MAPPING_ANON_KSM)
> +#define PAGE_MAPPING_FLAGS (PAGE_MAPPING_ANON | PAGE_MAPPING_ANON_KSM)
>
> static __always_inline bool folio_mapping_flags(const struct folio *folio)
> {
> --
> 2.49.0
>