diff options
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/gfs2/incore.h | 2 | ||||
| -rw-r--r-- | fs/gfs2/rgrp.c | 5 | 
2 files changed, 4 insertions, 3 deletions
| diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h index dd87379b61e..225347fbff3 100644 --- a/fs/gfs2/incore.h +++ b/fs/gfs2/incore.h @@ -94,7 +94,7 @@ struct gfs2_rgrpd {  	struct gfs2_sbd *rd_sbd;  	unsigned int rd_bh_count;  	u32 rd_last_alloc; -	unsigned char rd_flags; +	u32 rd_flags;  #define GFS2_RDF_CHECK		0x10000000 /* check for unlinked inodes */  #define GFS2_RDF_UPTODATE	0x20000000 /* rg is up to date */  #define GFS2_RDF_ERROR		0x40000000 /* error in rg */ diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c index 23637b9d1c7..ee3d5c1876a 100644 --- a/fs/gfs2/rgrp.c +++ b/fs/gfs2/rgrp.c @@ -581,7 +581,6 @@ static int read_rindex_entry(struct gfs2_inode *ip,  	rgd->rd_gl->gl_object = rgd;  	rgd->rd_flags &= ~GFS2_RDF_UPTODATE; -	rgd->rd_flags |= GFS2_RDF_CHECK;  	return error;  } @@ -703,6 +702,8 @@ static void gfs2_rgrp_in(struct gfs2_rgrpd *rgd, const void *buf)  	rg_flags = be32_to_cpu(str->rg_flags);  	rg_flags &= ~GFS2_RDF_MASK; +	rgd->rd_flags &= GFS2_RDF_MASK; +	rgd->rd_flags |= rg_flags;  	rgd->rd_free = be32_to_cpu(str->rg_free);  	rgd->rd_dinodes = be32_to_cpu(str->rg_dinodes);  	rgd->rd_igeneration = be64_to_cpu(str->rg_igeneration); @@ -773,7 +774,7 @@ int gfs2_rgrp_bh_get(struct gfs2_rgrpd *rgd)  		for (x = 0; x < length; x++)  			clear_bit(GBF_FULL, &rgd->rd_bits[x].bi_flags);  		gfs2_rgrp_in(rgd, (rgd->rd_bits[0].bi_bh)->b_data); -		rgd->rd_flags |= GFS2_RDF_UPTODATE; +		rgd->rd_flags |= (GFS2_RDF_UPTODATE | GFS2_RDF_CHECK);  	}  	spin_lock(&sdp->sd_rindex_spin); | 
