cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
From: Steven Whitehouse <swhiteho@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [GFS2 Patch][TRY 2] GFS2: Add rgrp information to block_alloc trace point
Date: Fri, 11 May 2012 10:56:47 +0100	[thread overview]
Message-ID: <1336730207.2740.8.camel@menhir> (raw)
In-Reply-To: <0e06b350-256a-4511-8a66-90f246090dbf@zmail12.collab.prod.int.phx2.redhat.com>

Hi,

Now in the -nmw git tree. Thanks,

Steve.

On Wed, 2012-05-09 at 12:11 -0400, Bob Peterson wrote:
> Hi,
> 
> This is a second attempt at a patch that adds rgrp information to the
> block allocation trace point for GFS2. As suggested, the patch was
> modified to list the rgrp information _after_ the fields that exist today.
> 
> Again, the reason for this patch is to allow us to trace and debug
> problems with the block reservations patch, which is still in the works.
> We can debug problems with reservations if we can see what block allocations
> result from the block reservations. It may also be handy in figuring out
> if there are problems in rgrp free space accounting. In other words,
> we can use it to track the rgrp and its free space along side the allocations
> that are taking place.
> 
> Regards,
> 
> Bob Peterson
> Red Hat File Systems
> 
> Signed-off-by: Bob Peterson <rpeterso@redhat.com> 
> ---
> Author: Bob Peterson <rpeterso@redhat.com>
> Date:   Thu Apr 12 08:32:45 2012 -0500
> 
> GFS2: Add rgrp information to block_alloc trace point
> 
> This patch adds resource group information to the block allocation
> trace point for GFS2. This makes it easier to debug problems with
> resource groups, such as management of the number of free blocks.
> 
> diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
> index 645c16f..f74fb9b 100644
> --- a/fs/gfs2/rgrp.c
> +++ b/fs/gfs2/rgrp.c
> @@ -1556,7 +1556,7 @@ int gfs2_alloc_blocks(struct gfs2_inode *ip, u64 *bn, unsigned int *nblocks,
>  				  ip->i_inode.i_gid);
>  
>  	rgd->rd_free_clone -= *nblocks;
> -	trace_gfs2_block_alloc(ip, block, *nblocks,
> +	trace_gfs2_block_alloc(ip, rgd, block, *nblocks,
>  			       dinode ? GFS2_BLKST_DINODE : GFS2_BLKST_USED);
>  	*bn = block;
>  	return 0;
> @@ -1583,7 +1583,7 @@ void __gfs2_free_blocks(struct gfs2_inode *ip, u64 bstart, u32 blen, int meta)
>  	rgd = rgblk_free(sdp, bstart, blen, GFS2_BLKST_FREE);
>  	if (!rgd)
>  		return;
> -	trace_gfs2_block_alloc(ip, bstart, blen, GFS2_BLKST_FREE);
> +	trace_gfs2_block_alloc(ip, rgd, bstart, blen, GFS2_BLKST_FREE);
>  	rgd->rd_free += blen;
>  	rgd->rd_flags &= ~GFS2_RGF_TRIMMED;
>  	gfs2_trans_add_bh(rgd->rd_gl, rgd->rd_bits[0].bi_bh, 1);
> @@ -1621,7 +1621,7 @@ void gfs2_unlink_di(struct inode *inode)
>  	rgd = rgblk_free(sdp, blkno, 1, GFS2_BLKST_UNLINKED);
>  	if (!rgd)
>  		return;
> -	trace_gfs2_block_alloc(ip, blkno, 1, GFS2_BLKST_UNLINKED);
> +	trace_gfs2_block_alloc(ip, rgd, blkno, 1, GFS2_BLKST_UNLINKED);
>  	gfs2_trans_add_bh(rgd->rd_gl, rgd->rd_bits[0].bi_bh, 1);
>  	gfs2_rgrp_out(rgd, rgd->rd_bits[0].bi_bh->b_data);
>  }
> @@ -1651,7 +1651,7 @@ static void gfs2_free_uninit_di(struct gfs2_rgrpd *rgd, u64 blkno)
>  void gfs2_free_di(struct gfs2_rgrpd *rgd, struct gfs2_inode *ip)
>  {
>  	gfs2_free_uninit_di(rgd, ip->i_no_addr);
> -	trace_gfs2_block_alloc(ip, ip->i_no_addr, 1, GFS2_BLKST_FREE);
> +	trace_gfs2_block_alloc(ip, rgd, ip->i_no_addr, 1, GFS2_BLKST_FREE);
>  	gfs2_quota_change(ip, -1, ip->i_inode.i_uid, ip->i_inode.i_gid);
>  	gfs2_meta_wipe(ip, ip->i_no_addr, 1);
>  }
> diff --git a/fs/gfs2/trace_gfs2.h b/fs/gfs2/trace_gfs2.h
> index dfa89cd..1b8b815 100644
> --- a/fs/gfs2/trace_gfs2.h
> +++ b/fs/gfs2/trace_gfs2.h
> @@ -457,10 +457,10 @@ TRACE_EVENT(gfs2_bmap,
>  /* Keep track of blocks as they are allocated/freed */
>  TRACE_EVENT(gfs2_block_alloc,
>  
> -	TP_PROTO(const struct gfs2_inode *ip, u64 block, unsigned len,
> -		u8 block_state),
> +	TP_PROTO(const struct gfs2_inode *ip, struct gfs2_rgrpd *rgd,
> +		 u64 block, unsigned len, u8 block_state),
>  
> -	TP_ARGS(ip, block, len, block_state),
> +	TP_ARGS(ip, rgd, block, len, block_state),
>  
>  	TP_STRUCT__entry(
>  		__field(        dev_t,  dev                     )
> @@ -468,6 +468,8 @@ TRACE_EVENT(gfs2_block_alloc,
>  		__field(	u64,	inum			)
>  		__field(	u32,	len			)
>  		__field(	u8,	block_state		)
> +		__field(        u64,	rd_addr			)
> +		__field(        u32,	rd_free_clone		)
>  	),
>  
>  	TP_fast_assign(
> @@ -476,14 +478,18 @@ TRACE_EVENT(gfs2_block_alloc,
>  		__entry->inum		= ip->i_no_addr;
>  		__entry->len		= len;
>  		__entry->block_state	= block_state;
> +		__entry->rd_addr	= rgd->rd_addr;
> +		__entry->rd_free_clone	= rgd->rd_free_clone;
>  	),
>  
> -	TP_printk("%u,%u bmap %llu alloc %llu/%lu %s",
> +	TP_printk("%u,%u bmap %llu alloc %llu/%lu %s rg:%llu rf:%u",
>  		  MAJOR(__entry->dev), MINOR(__entry->dev),
>  		  (unsigned long long)__entry->inum,
>  		  (unsigned long long)__entry->start,
>  		  (unsigned long)__entry->len,
> -		  block_state_name(__entry->block_state))
> +		  block_state_name(__entry->block_state),
> +		  (unsigned long long)__entry->rd_addr,
> +		  __entry->rd_free_clone)
>  );
>  
>  #endif /* _TRACE_GFS2_H */
> 




      reply	other threads:[~2012-05-11  9:56 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <30ec7483-cf44-4105-9e7f-6b924f0c6ddb@zmail12.collab.prod.int.phx2.redhat.com>
2012-05-09 16:11 ` [Cluster-devel] [GFS2 Patch][TRY 2] GFS2: Add rgrp information to block_alloc trace point Bob Peterson
2012-05-11  9:56   ` Steven Whitehouse [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1336730207.2740.8.camel@menhir \
    --to=swhiteho@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).