Re: xfs_file_splice_read: possible circular locking dependency detected
From: Al Viro <viro@ZenIV.linux.org.uk>
Date: 2016-09-09 02:26:30
From: Al Viro <viro@ZenIV.linux.org.uk>
Date: 2016-09-09 02:26:30
On Fri, Sep 09, 2016 at 11:53:24AM +1000, Dave Chinner wrote:
This isn't specific to splice - it's the same issue for all page cache lookup and validation checks. This issue is one of the reasons why XFS has a MMAPLOCK similar to the IOLOCK - we can't take the IOLOCK in the page fault path, but we still need to protect page faults against racing page invalidations within EOF from operations like hole punch.
Point taken. The window is between grabbing the pages and ->readpage() calls, though, so converting to ->read_iter() ought to deal with the entire class of problems... [snip]
Sounds reasonable, but the iter stuff makes my head hurt so I haven't thought about it that deeply yet.
O_DIRECT requires a bit of care, but it seems to be doable.