On Tue, Aug 06, 2019 at 06:54:17AM -0400, Jeff Layton wrote: > That part of the patch description is unclear. I'll fix that up, but > this patch does ensure that no buffered I/O can take place while any > direct I/O is in flight. Only operations of the same "flavor" can run > in parallel. Note that we _do_ use the i_rwsem here, but there is also > an additional per-inode flag that handles the buffered read/direct I/O > exclusion. > > I did take a look at the xfs_ilock* code this morning. That's quite a > bit more complex than this. It's possible that ceph doesn't serialize > mmap I/O and O_DIRECT properly. I'll have to look over xfstests and see > whether there is a good test for that as well and whether it passes. Note that the mmap bits aren't really related to direct vs buffer locking but for hole punching vs page faults. As ceph supports hole punching you'll probably need it too, though.