Jason Gunthorpe wrote: > On Mon, Oct 17, 2022 at 01:51:18PM -0700, Dan Williams wrote: > > > > A good design is that nothing has a struct folio * unless it can also > > > prove it has a non-zero refcount on it, and that is simply impossible > > > for any caller at this point. > > > > I agree that's a good design, and I think it is a bug to make this > > request on anything but a zero-refcount folio, but plumbing pgmap > > offsets to replace pfn_to_page() would require dax_direct_access() to > > shift from a pfn lookup to a pgmap + offset lookup. > > That is fair for this series, but maybe the other pgmap users shouldn't be > converted to use this style of API? That is also fair... I think my main stumbling block is getting back to the pgmap from the DAX code. However, I could move that to a dirty-hack that looks it up via dax_direct_access()+pfn_to_page(), but keep the core request API based on pgmap-offset. I.e. it needs some access to a 0-referenced page, but it moves that wart out-of-line of the main flow. Some of the non-DAX users might need this hack as well unless I can figure out how to route back to the pgmap without interrogating the pfn. I'll try it incrementally to the current series to make things easier for Andrew.