Thread (76 messages) 76 messages, 9 authors, 2019-06-20

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help