On Wed, Aug 28, 2024 at 03:46:34PM -0400, Chuck Lever wrote: > On Wed, Aug 28, 2024 at 08:34:00PM +0100, Matthew Wilcox wrote: > > There are a few problems I think this can solve. One is efficient > > implementation of NFS READPLUS. > > To expand on this, we're talking about the Linux NFS server's > implementation of the NFSv4.2 READ_PLUS operation, which is > specified here: > > https://www.rfc-editor.org/rfc/rfc7862.html#section-15.10 > > The READ_PLUS operation can return an array of content segments that > include regular data, holes in the file, or data patterns. Knowing > how the filesystem stores a file would help NFSD identify where it > can return a representation of a hole rather than a string of actual > zeroes, for instance. Thanks for the reference; I went looking for it and found only the draft. Another thing this could help with is reducing page cache usage for very sparse files. Today if we attempt to read() or page fault on a file hole, we allocate a fresh page of memory and ask the filesystem to fill it. The filesystem notices that it's a hole and calls memset(). If the VFS knew that the extent was a hole, it could use the shared zero page instead. Don't know how much of a performance win this would be, but it might be useful.