summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKinglong Mee <kinglongmee@gmail.com>2015-07-07 02:12:03 (GMT)
committerJ. Bruce Fields <bfields@redhat.com>2015-07-20 18:58:46 (GMT)
commitd8398fc11762d162b2e7b0f368278449899cfbdf (patch)
tree3457fc72a7b8db8d1d100e40784c21a7ef7ff02a
parent28e51af7c608f661a728db9d47b33c54096fdc59 (diff)
downloadlinux-d8398fc11762d162b2e7b0f368278449899cfbdf.tar.xz
nfsd: Set lc_size_chg before ops->proc_layoutcommit
After proc_layoutcommit success, i_size_read(inode) always >= new_size. Just set lc_size_chg before proc_layoutcommit, if proc_layoutcommit failed, nfsd will skip the lc_size_chg, so it's no harm. Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
-rw-r--r--fs/nfsd/nfs4proc.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
index 90cfda7..d112c8a 100644
--- a/fs/nfsd/nfs4proc.c
+++ b/fs/nfsd/nfs4proc.c
@@ -1364,10 +1364,6 @@ nfsd4_layoutcommit(struct svc_rqst *rqstp,
goto out;
}
- nfserr = ops->proc_layoutcommit(inode, lcp);
- if (nfserr)
- goto out_put_stid;
-
if (new_size > i_size_read(inode)) {
lcp->lc_size_chg = 1;
lcp->lc_newsize = new_size;
@@ -1375,7 +1371,7 @@ nfsd4_layoutcommit(struct svc_rqst *rqstp,
lcp->lc_size_chg = 0;
}
-out_put_stid:
+ nfserr = ops->proc_layoutcommit(inode, lcp);
nfs4_put_stid(&ls->ls_stid);
out:
return nfserr;