Re: [PATCH 7/8] mm: remove the extra ZONE_DEVICE struct page refcount

From: Ralph Campbell
Date: Mon Feb 07 2022 - 21:41:36 EST


On 2/6/22 22:32, Christoph Hellwig wrote:
ZONE_DEVICE struct pages have an extra reference count that complicates
the code for put_page() and several places in the kernel that need to
check the reference count to see that a page is not being used (gup,
compaction, migration, etc.). Clean up the code so the reference count
doesn't need to be treated specially for ZONE_DEVICE pages.

Note that this excludes the special idle page wakeup for fsdax pages,
which still happens at refcount 1. This is a separate issue and will
be sorted out later. Given that only fsdax pages require the
notifiacation when the refcount hits 1 now, the PAGEMAP_OPS Kconfig
symbol can go away and be replaced with a FS_DAX check for this hook
in the put_page fastpath.

Based on an earlier patch from Ralph Campbell <rcampbell@xxxxxxxxxx>.

Signed-off-by: Christoph Hellwig <hch@xxxxxx>

Thanks for working on this, definite step forward.

Reviewed-by: Ralph Campbell <rcampbell@xxxxxxxxxx>