From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Whitehouse Date: Thu, 12 Apr 2012 14:29:30 +0100 Subject: [Cluster-devel] [GFS2 PATCH] GFS2: Use variable rather than qa to determine if unstuff necessary In-Reply-To: <1c7997e4-87d1-4a32-a452-79884d778d87@zmail12.collab.prod.int.phx2.redhat.com> References: <1c7997e4-87d1-4a32-a452-79884d778d87@zmail12.collab.prod.int.phx2.redhat.com> Message-ID: <1334237370.2697.16.camel@menhir> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi, Now in the -nmw git tree. Thanks, Steve. On Thu, 2012-04-12 at 09:19 -0400, Bob Peterson wrote: > Hi, > > This patch adds an "unstuff" variable to function do_grow to > determine whether unstuff was warranted. This will make it > easier in the future to re-combine qadata with the reservations > structure, once its lifespan has been expanded. > > Regards, > > Bob Peterson > Red Hat GFS > > Signed-off-by: Bob Peterson > -- > Author: Bob Peterson > Date: Thu Apr 12 09:04:18 2012 -0500 > > GFS2: Use variable rather than qa to determine if unstuff necessary > > 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. > > diff --git a/fs/gfs2/bmap.c b/fs/gfs2/bmap.c > index 03c04fe..420bbeb 100644 > --- a/fs/gfs2/bmap.c > +++ b/fs/gfs2/bmap.c > @@ -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); >