Re: [RFC PATCH v3 0/2] mm: remove extra ZONE_DEVICE struct page refcount

From: Ralph Campbell
Date: Thu May 13 2021 - 13:36:47 EST



On 5/13/21 6:15 AM, Matthew Wilcox wrote:
On Thu, Oct 01, 2020 at 11:17:13AM -0700, Ralph Campbell wrote:
This is still an RFC because after looking at the pmem/dax code some
more, I realized that the ZONE_DEVICE struct pages are being inserted
into the process' page tables with vmf_insert_mixed() and a zero
refcount on the ZONE_DEVICE struct page. This is sort of OK because
insert_pfn() increments the reference count on the pgmap which is what
prevents memunmap_pages() from freeing the struct pages and it doesn't
check for a non-zero struct page reference count.
But, any calls to get_page() will hit the VM_BUG_ON_PAGE() that
checks for a reference count == 0.

This seems to have gone quiet. What needs to happen to resurrect this?

The main thing I need is time. I have been tied up with other commitments,
there has been a lot of changes going on in FS/DAX and the page cache,
and FS/DAX doesn't use the page reference count to indicate the page is
"free" but rather that it is "idle" so I need a lot of time to really
understand why FS/DAX isn't just any FS on top of a DAX block device.

I too wish this was easier to fix.