浏览代码

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>
Kinglong Mee 10 年之前
父节点
当前提交
d8398fc117
共有 1 个文件被更改,包括 1 次插入5 次删除
  1. 1 5
      fs/nfsd/nfs4proc.c

+ 1 - 5
fs/nfsd/nfs4proc.c

@@ -1364,10 +1364,6 @@ nfsd4_layoutcommit(struct svc_rqst *rqstp,
 		goto out;
 		goto out;
 	}
 	}
 
 
-	nfserr = ops->proc_layoutcommit(inode, lcp);
-	if (nfserr)
-		goto out_put_stid;
-
 	if (new_size > i_size_read(inode)) {
 	if (new_size > i_size_read(inode)) {
 		lcp->lc_size_chg = 1;
 		lcp->lc_size_chg = 1;
 		lcp->lc_newsize = new_size;
 		lcp->lc_newsize = new_size;
@@ -1375,7 +1371,7 @@ nfsd4_layoutcommit(struct svc_rqst *rqstp,
 		lcp->lc_size_chg = 0;
 		lcp->lc_size_chg = 0;
 	}
 	}
 
 
-out_put_stid:
+	nfserr = ops->proc_layoutcommit(inode, lcp);
 	nfs4_put_stid(&ls->ls_stid);
 	nfs4_put_stid(&ls->ls_stid);
 out:
 out:
 	return nfserr;
 	return nfserr;