Re: [PATCH RFC 00/10] RDMA/FS DAX truncate proposal
From: Ira Weiny <hidden>
Date: 2019-06-13 23:58:55
Also in:
linux-fsdevel, linux-mm, linux-rdma, linux-xfs, lkml, nvdimm
On Thu, Jun 13, 2019 at 08:45:30PM -0300, Jason Gunthorpe wrote:
On Thu, Jun 13, 2019 at 02:13:21PM -0700, Ira Weiny wrote:quoted
On Thu, Jun 13, 2019 at 08:27:55AM -0700, Matthew Wilcox wrote:quoted
On Thu, Jun 13, 2019 at 10:25:55AM +1000, Dave Chinner wrote:quoted
e.g. Process A has an exclusive layout lease on file F. It does an IO to file F. The filesystem IO path checks that Process A owns the lease on the file and so skips straight through layout breaking because it owns the lease and is allowed to modify the layout. It then takes the inode metadata locks to allocate new space and write new data. Process B now tries to write to file F. The FS checks whether Process B owns a layout lease on file F. It doesn't, so then it tries to break the layout lease so the IO can proceed. The layout breaking code sees that process A has an exclusive layout lease granted, and so returns -ETXTBSY to process B - it is not allowed to break the lease and so the IO fails with -ETXTBSY.This description doesn't match the behaviour that RDMA wants either. Even if Process A has a lease on the file, an IO from Process A which results in blocks being freed from the file is going to result in the RDMA device being able to write to blocks which are now freed (and potentially reallocated to another file).I don't understand why this would not work for RDMA? As long as the layout does not change the page pins can remain in place.Because process A had a layout lease (and presumably a MR) and the layout was still modified in way that invalidates the RDMA MR.
Oh sorry I miss read the above... (got Process A and B mixed up...) Right, but Process A still can't free those blocks because the gup pin exists on them... So yea it can't _just_ be a layout lease which controls this on the "file fd". Ira