On Wed, 6 Feb 2019, Doug Ledford wrote: > > Most of the cases we want revoke for are things like truncate(). > > Shouldn't happen with a sane system, but we're trying to avoid users > > doing awful things like being able to DMA to pages that are now part of > > a different file. > > Why is the solution revoke then? Is there something besides truncate > that we have to worry about? I ask because EBUSY is not currently > listed as a return value of truncate, so extending the API to include > EBUSY to mean "this file has pinned pages that can not be freed" is not > (or should not be) totally out of the question. > > Admittedly, I'm coming in late to this conversation, but did I miss the > portion where that alternative was ruled out? Coming in late here too but isnt the only DAX case that we are concerned about where there was an mmap with the O_DAX option to do direct write though? If we only allow this use case then we may not have to worry about long term GUP because DAX mapped files will stay in the physical location regardless. Maybe we can solve the long term GUP problem through the requirement that user space acquires some sort of means to pin the pages? In the DAX case this is given by the filesystem and the hardware will basically take care of writeback. In case of anonymous memory this can be guaranteed otherwise and is less critical since these pages are not part of the pagecache and are not subject to writeback.