From: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> The following patch series addresses a series of issues that affect the NFS client's I/O path. The first patch is needed to fix a corner case when using mmap() to map the tail end of the file into memory, and then later extending the file length (see recent xfstests generic/363). The second set is used to ensure correct ordering of O_DIRECT operations with truncate + fallocate. Finally, there are fixes to ensure folio invalidation is correct w.r.t. the VFS documentation, and a cleanup of the code that decides when a folio can be marked as up to date. v2: - Fix an off by one issue in nfs_write_begin() - Address eof page pollution on copy offload and clone range (Thanks, Olga!) - Address O_DIRECT ordering w.r.t. copy offload and clone range Trond Myklebust (8): NFS: Protect against 'eof page pollution' NFSv4.2: Protect copy offload and clone against 'eof page pollution' NFS: Serialise O_DIRECT i/o and truncate() NFSv4.2: Serialise O_DIRECT i/o and fallocate() NFSv4.2: Serialise O_DIRECT i/o and clone range NFSv4.2: Serialise O_DIRECT i/o and copy range NFS: nfs_invalidate_folio() must observe the offset and size arguments NFS: Fix the marking of the folio as up to date fs/nfs/file.c | 40 +++++++++++++++++++++++++++++++--- fs/nfs/inode.c | 13 +++++++++--- fs/nfs/internal.h | 12 +++++++++++ fs/nfs/io.c | 13 ++---------- fs/nfs/nfs42proc.c | 35 ++++++++++++++++++++++-------- fs/nfs/nfs4file.c | 2 ++ fs/nfs/nfstrace.h | 1 + fs/nfs/write.c | 53 ++++++---------------------------------------- 8 files changed, 96 insertions(+), 73 deletions(-) -- 2.51.0