]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
nfs: keep PG_UPTODATE clear after read errors in page groups
authorClark Wang <xiaoning.wang@nxp.com>
Tue, 2 Jun 2026 11:04:38 +0000 (19:04 +0800)
committerAnna Schumaker <anna.schumaker@hammerspace.com>
Mon, 8 Jun 2026 16:06:41 +0000 (12:06 -0400)
commit3ff72e1cdf5c337b6acfcf3fcef748c5b9a5316b
tree7a9f859a3f1231216272fdd9db3fc3f780202837
parent77b160b2d863d37f36b6c38e80a7d259ce939e69
nfs: keep PG_UPTODATE clear after read errors in page groups

When a read request is split into multiple subrequests, earlier
completions may advance PG_UPTODATE state for the page group once
their bytes fall within hdr->good_bytes. If a later subrequest in
the same group then completes with NFS_IOHDR_ERROR, the read path
needs to clear any accumulated PG_UPTODATE state and keep later
completions from rebuilding it.

Otherwise, a subsequent successful subrequest can re-enter
nfs_page_group_set_uptodate(), restore the page-group sync state,
and leave stale PG_UPTODATE behind for nfs_page_group_destroy()
to trip over in nfs_free_request().

Add a sticky page-group read-failed flag. Once any subrequest in
the group is known to be bad, mark the group failed, clear any
accumulated PG_UPTODATE state, and refuse further PG_UPTODATE
synchronization for the rest of the completion walk.

Fixes: 67d0338edd71 ("nfs: page group syncing in read path")
Signed-off-by: Clark Wang <xiaoning.wang@nxp.com>
Signed-off-by: Anna Schumaker <anna.schumaker@hammerspace.com>
fs/nfs/read.c
include/linux/nfs_page.h