summaryrefslogtreecommitdiffstats
path: root/fs/nfsd
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2021-12-30 16:26:18 +0100
committerChuck Lever <chuck.lever@oracle.com>2022-01-08 20:42:02 +0100
commitcdc556600c0133575487cc69fb3128440b3c3e92 (patch)
tree92edd125eee8a4d0e952ad936080a0b3b78fbcc2 /fs/nfsd
parentnfsd: Add a tracepoint for errors in nfsd4_clone_file_range() (diff)
downloadlinux-cdc556600c0133575487cc69fb3128440b3c3e92.tar.xz
linux-cdc556600c0133575487cc69fb3128440b3c3e92.zip
NFSD: Write verifier might go backwards
When vfs_iter_write() starts to fail because a file system is full, a bunch of writes can fail at once with ENOSPC. These writes repeatedly invoke nfsd_reset_boot_verifier() in quick succession. Ensure that the time it grabs doesn't go backwards due to an ntp adjustment going on at the same time. Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'fs/nfsd')
-rw-r--r--fs/nfsd/nfssvc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
index 14c1ef6f8cc7..6eccf6700250 100644
--- a/fs/nfsd/nfssvc.c
+++ b/fs/nfsd/nfssvc.c
@@ -363,7 +363,7 @@ void nfsd_copy_boot_verifier(__be32 verf[2], struct nfsd_net *nn)
static void nfsd_reset_boot_verifier_locked(struct nfsd_net *nn)
{
- ktime_get_real_ts64(&nn->nfssvc_boot);
+ ktime_get_raw_ts64(&nn->nfssvc_boot);
}
void nfsd_reset_boot_verifier(struct nfsd_net *nn)