Re: [PATCH 16/25] device-dax: use the dev_pagemap internal refcount

From: Dan Williams
Date: Fri Jun 28 2019 - 14:59:32 EST

On Fri, Jun 28, 2019 at 11:52 AM Christoph Hellwig <hch@xxxxxx> wrote:
> On Fri, Jun 28, 2019 at 11:44:35AM -0700, Dan Williams wrote:
> > There is a problem with the series in CH's tree. It removes the
> > ->page_free() callback from the release_pages() path because it goes
> > too far and removes the put_devmap_managed_page() call.
> release_pages only called put_devmap_managed_page for device public
> pages. So I can't see how that is in any way a problem.

It's a bug that the call to put_devmap_managed_page() was gated by
MEMORY_DEVICE_PUBLIC in release_pages(). That path is also applicable
to MEMORY_DEVICE_FSDAX because it needs to trigger the ->page_free()
callback to wake up wait_on_var() via fsdax_pagefree().

So I guess you could argue that the MEMORY_DEVICE_PUBLIC removal patch
left the original bug in place. In that sense we're no worse off, but
since we know about the bug, the fix and the patches have not been
applied yet, why not fix it now?