[PATCH v2 0/8] Assortment of I/O fixes for the NFS client

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux