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 */
>
prev parent 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).