Jason Gunthorpe wrote: > On Tue, Sep 06, 2022 at 10:23:41AM -0700, Dan Williams wrote: > > > > Can we continue to have the weird page->refcount behavior and still > > > change the other things? > > > > No at a minimum the pgmap vs page->refcount problem needs to be solved > > first. > > So who will do the put page after the PTE/PMD's are cleared out? In > the normal case the tlb flusher does it integrated into zap.. AFAICS the zap manages the _mapcount not _refcount. Are you talking about page_remove_rmap() or some other reference count drop? > Can we safely have the put page in the fsdax side after the zap? The _refcount is managed from the lifetime insert_page() to truncate_inode_pages(), where for DAX those are managed from dax_insert_dentry() to dax_delete_mapping_entry(). I think that is sufficient modulo the gap you identified where I was not accounting for additional _refcount increases outside of gup while the DAX entry is live.