nfsd: Set lc_size_chg before ops->proc_layoutcommit
authorKinglong Mee <kinglongmee@gmail.com>
Tue, 7 Jul 2015 02:12:03 +0000 (10:12 +0800)
committerJ. Bruce Fields <bfields@redhat.com>
Mon, 20 Jul 2015 18:58:46 +0000 (14:58 -0400)
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>
fs/nfsd/nfs4proc.c

index 90cfda7..d112c8a 100644 (file)
@@ -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;