Re: ZONE_DEVICE refcounting

Dan Williams
2024-03-21T06:05:55Z

Alistair Popple wrote:
>
> Alistair Popple <apopple@nvidia.com> writes:
>
> > Dan Williams <dan.j.williams@intel.com> writes:
> >
> >> Alistair Popple wrote:
> >
> > I also noticed folio_anon() is not safe to call on a FS DAX page due to
> > sharing PAGE_MAPPING_DAX_SHARED.
>
> Also it feels like I could be missing something here. AFAICT the
> page->mapping and page->index fields can't actually be used outside of
> fs/dax because they are overloaded for the shared case. Therefore
> setting/clearing them could be skipped and the only reason for doing so
> is so dax_associate_entry()/dax_disassociate_entry() can generate
> warnings which should never occur anyway. So all that code is
> functionally unnecessary.

What do you mean outside of fs/dax, do you literally mean outside of
fs/dax.c, or the devdax case (i.e. dax without fs-entanglements)? Memory
failure needs ->mapping and ->index to rmap dax pages. See
mm/memory-failure.c::__add_to_kill() and
mm/memory-failure.c::__add_to_kill_fsdax() where that latter one is for
cases where the fs needs has signed up to react to dax page failure.