[Cluster-devel] [PATCH] GFS2: Addendum patch 2 for gfs2_grow

Steven Whitehouse swhiteho at redhat.com
Tue May 15 08:48:41 UTC 2007


Hi,

Now in the -nmw git tree. Thanks,

Steve.

On Mon, 2007-05-14 at 12:42 -0500, Robert Peterson wrote:
> This addendum patch 2 corrects three things:
> 
> 1. It fixes a stupid mistake in the previous addendum that broke gfs2.
>    Ref: https://www.redhat.com/archives/cluster-devel/2007-May/msg00162.html
> 2. It fixes a problem that Dave Teigland pointed out regarding the
>    external declarations in ops_address.h being in the wrong place.
> 3. It recasts a couple more %llu printks to (unsigned long long)
>    as requested by Steve Whitehouse.
> 
> I would have loved to put this all in one revised patch, but there was 
> a rush to get some patches for RHEL5.	Therefore, the previous patches 
> were applied to the git tree "as is" and therefore, I'm posting another 
> addendum.  Sorry.
> 
> This patch is to be applied to today's rebased 2.6.22-rc1 kernel git tree.
> 
> Signed-off-by: Bob Peterson <rpeterso at redhat.com>
> --
>  fs/gfs2/glock.c       |    7 ++++---
>  fs/gfs2/ops_address.c |    1 +
>  fs/gfs2/ops_address.h |    3 ---
>  fs/gfs2/rgrp.c        |    6 +++---
>  fs/gfs2/rgrp.h        |    1 +
>  5 files changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
> index 1815429..c66c718 100644
> --- a/fs/gfs2/glock.c
> +++ b/fs/gfs2/glock.c
> @@ -1823,7 +1823,8 @@ static int dump_inode(struct glock_iter *gi, struct gfs2_inode *ip)
>  
>  	print_dbg(gi, "  Inode:\n");
>  	print_dbg(gi, "    num = %llu/%llu\n",
> -		    ip->i_num.no_formal_ino, ip->i_num.no_addr);
> +		  (unsigned long long)ip->i_num.no_formal_ino,
> +		  (unsigned long long)ip->i_num.no_addr);
>  	print_dbg(gi, "    type = %u\n", IF2DT(ip->i_inode.i_mode));
>  	print_dbg(gi, "    i_flags =");
>  	for (x = 0; x < 32; x++)
> @@ -1909,8 +1910,8 @@ static int dump_glock(struct glock_iter *gi, struct gfs2_glock *gl)
>  	}
>  	if (test_bit(GLF_DEMOTE, &gl->gl_flags)) {
>  		print_dbg(gi, "  Demotion req to state %u (%llu uS ago)\n",
> -			  gl->gl_demote_state,
> -			  (u64)(jiffies - gl->gl_demote_time)*(1000000/HZ));
> +			  gl->gl_demote_state, (unsigned long long)
> +			  (jiffies - gl->gl_demote_time)*(1000000/HZ));
>  	}
>  	if (gl->gl_ops == &gfs2_inode_glops && gl->gl_object) {
>  		if (!test_bit(GLF_LOCK, &gl->gl_flags) &&
> diff --git a/fs/gfs2/ops_address.c b/fs/gfs2/ops_address.c
> index e0b4e8c..4913ef5 100644
> --- a/fs/gfs2/ops_address.c
> +++ b/fs/gfs2/ops_address.c
> @@ -32,6 +32,7 @@
>  #include "trans.h"
>  #include "rgrp.h"
>  #include "ops_file.h"
> +#include "super.h"
>  #include "util.h"
>  #include "glops.h"
>  
> diff --git a/fs/gfs2/ops_address.h b/fs/gfs2/ops_address.h
> index 56c30da..fa1b5b3 100644
> --- a/fs/gfs2/ops_address.h
> +++ b/fs/gfs2/ops_address.h
> @@ -18,8 +18,5 @@ extern const struct address_space_operations gfs2_file_aops;
>  extern int gfs2_get_block(struct inode *inode, sector_t lblock,
>  			  struct buffer_head *bh_result, int create);
>  extern int gfs2_releasepage(struct page *page, gfp_t gfp_mask);
> -extern u64 gfs2_ri_total(struct gfs2_sbd *sdp);
> -extern void gfs2_statfs_change(struct gfs2_sbd *sdp, s64 total, s64 free,
> -			       s64 dinodes);
>  
>  #endif /* __OPS_ADDRESS_DOT_H__ */
> diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
> index 48a6461..a62c0f2 100644
> --- a/fs/gfs2/rgrp.c
> +++ b/fs/gfs2/rgrp.c
> @@ -527,10 +527,10 @@ static int gfs2_ri_update(struct gfs2_inode *ip)
>  	struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode);
>  	struct inode *inode = &ip->i_inode;
>  	struct file_ra_state ra_state;
> -	u64 junk = ip->i_di.di_size;
> +	u64 rgrp_count = ip->i_di.di_size;
>  	int error;
>  
> -	if (do_div(junk, sizeof(struct gfs2_rindex))) {
> +	if (do_div(rgrp_count, sizeof(struct gfs2_rindex))) {
>  		gfs2_consist_inode(ip);
>  		return -EIO;
>  	}
> @@ -538,7 +538,7 @@ static int gfs2_ri_update(struct gfs2_inode *ip)
>  	clear_rgrpdi(sdp);
>  
>  	file_ra_state_init(&ra_state, inode->i_mapping);
> -	for (sdp->sd_rgrps = 0;; sdp->sd_rgrps++) {
> +	for (sdp->sd_rgrps = 0; sdp->sd_rgrps < rgrp_count; sdp->sd_rgrps++) {
>  		error = read_rindex_entry(ip, &ra_state);
>  		if (error) {
>  			clear_rgrpdi(sdp);
> diff --git a/fs/gfs2/rgrp.h b/fs/gfs2/rgrp.h
> index b01e0cf..b4c6adf 100644
> --- a/fs/gfs2/rgrp.h
> +++ b/fs/gfs2/rgrp.h
> @@ -65,5 +65,6 @@ void gfs2_rlist_add(struct gfs2_sbd *sdp, struct gfs2_rgrp_list *rlist,
>  void gfs2_rlist_alloc(struct gfs2_rgrp_list *rlist, unsigned int state,
>  		      int flags);
>  void gfs2_rlist_free(struct gfs2_rgrp_list *rlist);
> +u64 gfs2_ri_total(struct gfs2_sbd *sdp);
>  
>  #endif /* __RGRP_DOT_H__ */
> 




More information about the Cluster-devel mailing list