[PATCH 0/4] Fix a few error paths in nfs_readpage and fscache

Dave Wysochanski
2021-06-28T17:39:12Z

A prior patchset refactored some nfs read code paths but introduced a
few problems in some error paths. This patcheset cleans up these
error paths specifically the following commit:
1e83b173b266 ("NFS: Add nfs_pageio_complete_read() and remove nfs_readpage_async()")

The last patch fixes a bug introduced in the above commit, and when
fscache is enabled and an unlikely error occurs. The first 3 patches
are refactorings / cleanups and while they do not fix any actual bug
to my knowledge, they are required for the 4th patch.

NOTE: The first patch was submitted prior as a solo patch[1], it is
included here unchanged from that submission.
[1] https://marc.info/?l=linux-nfs&m=162454885107812&w=2

Testing
=======
I applied this series on top of Trond's testing tree based on 5.13-rc6
and at:
159dd33001be Merge branch 'sysfs-devel'

scripts/checkpatch.pl was run on all patches and no warnings or errors.

For unit tests of these specific code paths I created custom error injection
to induce failures.

For regression, I ran iterations of xfstests with different servers and all NFS
versions (4.2, 4.1, 4.0, 3), including pNFS (flexfiles,filelayout), and
didn't see any new failures.

Dave Wysochanski (4):
NFS: Remove unnecessary inode parameter from
nfs_pageio_complete_read()
NFS: Ensure nfs_readpage does not wait an internal error occurs
NFS: Allow internal use of read structs and functions
NFS: Fix fscache read from NFS after cache error

fs/nfs/fscache.c | 14 ++++++++++++--
fs/nfs/internal.h | 7 +++++++
fs/nfs/read.c | 39 ++++++++++++++++++---------------------
3 files changed, 37 insertions(+), 23 deletions(-)

--
1.8.3.1