GFS2: Use variable rather than qa to determine if unstuff necessary
authorBob Peterson <rpeterso@redhat.com>
Thu, 12 Apr 2012 13:19:30 +0000 (09:19 -0400)
committerSteven Whitehouse <swhiteho@redhat.com>
Tue, 24 Apr 2012 15:44:33 +0000 (16:44 +0100)
In the future, the qadata structure will be eliminated and merged
back in with the block reservation structure, after we extend the
lifespan of that. This patch is a step forward in eliminating the
qadata structure. It adds a variable to the do_grow function to
determine when unstuffing is necessary, and has been done.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/bmap.c

index 03c04fe..420bbeb 100644 (file)
@@ -1169,6 +1169,7 @@ static int do_grow(struct inode *inode, u64 size)
        struct buffer_head *dibh;
        struct gfs2_qadata *qa = NULL;
        int error;
+       int unstuff = 0;
 
        if (gfs2_is_stuffed(ip) &&
            (size > (sdp->sd_sb.sb_bsize - sizeof(struct gfs2_dinode)))) {
@@ -1183,13 +1184,14 @@ static int do_grow(struct inode *inode, u64 size)
                error = gfs2_inplace_reserve(ip, 1);
                if (error)
                        goto do_grow_qunlock;
+               unstuff = 1;
        }
 
        error = gfs2_trans_begin(sdp, RES_DINODE + RES_STATFS + RES_RG_BIT, 0);
        if (error)
                goto do_grow_release;
 
-       if (qa) {
+       if (unstuff) {
                error = gfs2_unstuff_dinode(ip, NULL);
                if (error)
                        goto do_end_trans;
@@ -1208,7 +1210,7 @@ static int do_grow(struct inode *inode, u64 size)
 do_end_trans:
        gfs2_trans_end(sdp);
 do_grow_release:
-       if (qa) {
+       if (unstuff) {
                gfs2_inplace_release(ip);
 do_grow_qunlock:
                gfs2_quota_unlock(ip);