On Fri, Feb 8, 2019 at 3:11 AM Jan Kara <jack@xxxxxxx> wrote: > > On Fri 08-02-19 15:43:02, Dave Chinner wrote: > > On Thu, Feb 07, 2019 at 04:55:37PM +0000, Christopher Lameter wrote: > > > One approach that may be a clean way to solve this: > > > 3. Filesystems that allow bypass of the page cache (like XFS / DAX) will > > > provide the virtual mapping when the PIN is done and DO NO OPERATIONS > > > on the longterm pinned range until the long term pin is removed. > > > > So, ummm, how do we do block allocation then, which is done on > > demand during writes? > > > > IOWs, this requires the application to set up the file in the > > correct state for the filesystem to lock it down so somebody else > > can write to it. That means the file can't be sparse, it can't be > > preallocated (i.e. can't contain unwritten extents), it must have zeroes > > written to it's full size before being shared because otherwise it > > exposes stale data to the remote client (secure sites are going to > > love that!), they can't be extended, etc. > > > > IOWs, once the file is prepped and leased out for RDMA, it becomes > > an immutable for the purposes of local access. > > > > Which, essentially we can already do. Prep the file, map it > > read/write, mark it immutable, then pin it via the longterm gup > > interface which can do the necessary checks. > > Hum, and what will you do if the immutable file that is target for RDMA > will be a source of reflink? That seems to be currently allowed for > immutable files but RDMA store would be effectively corrupting the data of > the target inode. But we could treat it similarly as swapfiles - those also > have to deal with writes to blocks beyond filesystem control. In fact the > similarity seems to be quite large there. What do you think? This sounds so familiar... https://lwn.net/Articles/726481/ I'm not opposed to trying again, but leases was what crawled out smoking crater when this last proposal was nuked.