summaryrefslogtreecommitdiff
path: root/fs/nfsd/vfs.c
diff options
context:
space:
mode:
authorTrond Myklebust <trondmy@gmail.com>2020-01-06 21:40:31 +0300
committerJ. Bruce Fields <bfields@redhat.com>2020-01-23 00:25:40 +0300
commit7bf94c6ba9fb291bd28fac3228553cb305bfc92a (patch)
tree8c8de0c138f5773564d4ee61fabe5d7c14a93623 /fs/nfsd/vfs.c
parent5011af4c698a95b4dc4e374b1ce3acd122a9170f (diff)
downloadlinux-7bf94c6ba9fb291bd28fac3228553cb305bfc92a.tar.xz
nfsd: Update the boot verifier on stable writes too.
We don't know if the error returned by the fsync() call is exclusive to the data written by the stable write, so play it safe. Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/vfs.c')
-rw-r--r--fs/nfsd/vfs.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
index 4652854f3dd5..0a048dfb68ec 100644
--- a/fs/nfsd/vfs.c
+++ b/fs/nfsd/vfs.c
@@ -994,8 +994,11 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct nfsd_file *nf,
host_err = vfs_iter_write(file, &iter, &pos, flags);
up_read(&nf->nf_rwsem);
}
- if (host_err < 0)
+ if (host_err < 0) {
+ nfsd_reset_boot_verifier(net_generic(SVC_NET(rqstp),
+ nfsd_net_id));
goto out_nfserr;
+ }
*cnt = host_err;
nfsdstats.io_write += *cnt;
fsnotify_modify(file);