aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrond Myklebust <[email protected]>2020-01-06 13:40:31 -0500
committerJ. Bruce Fields <[email protected]>2020-01-22 16:25:40 -0500
commit7bf94c6ba9fb291bd28fac3228553cb305bfc92a (patch)
tree8c8de0c138f5773564d4ee61fabe5d7c14a93623
parent5011af4c698a95b4dc4e374b1ce3acd122a9170f (diff)
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 <[email protected]> Signed-off-by: J. Bruce Fields <[email protected]>
-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);