From: Brian Foster <bfoster@redhat.com>
To: Eric Sandeen <sandeen@sandeen.net>
Cc: xfs@oss.sgi.com
Subject: Re: [PATCH] xfs: print name of verifier if it fails
Date: Thu, 12 Nov 2015 08:55:41 -0500 [thread overview]
Message-ID: <20151112135541.GD5068@bfoster.bfoster> (raw)
In-Reply-To: <56449702.4010502@sandeen.net>
On Thu, Nov 12, 2015 at 07:41:22AM -0600, Eric Sandeen wrote:
>
>
> On 11/12/15 6:40 AM, Brian Foster wrote:
> > On Wed, Nov 11, 2015 at 04:13:17PM -0600, Eric Sandeen wrote:
> >> This adds a name to each buf_ops structure, so that if
> >> a verifier fails we can print the type of verifier that
> >> failed it. Should be a slight debugging aid, I hope.
> >>
> >> Signed-off-by: Eric Sandeen <sandeen@redhat.com>
> >> ---
> >
> > Seems harmless, but is this really necessary when we dump a stack trace?
> > I suppose that only happens if the error level is set appropriately.
> > Another option might be to use _RET_IP_. It might not be as pretty, but
> > we already use it all over the place for tracepoints and such.
>
> The main motivator for the patch is userspace, where we have no dump_stack,
> error level, etc. This patch is just to keep things in sync in libxfs.
>
Ah, sounds good to me:
Reviewed-by: Brian Foster <bfoster@redhat.com>
> Thanks,
> -Eric
>
> > Brian
> >
> >>
> >> diff --git a/fs/xfs/libxfs/xfs_alloc.c b/fs/xfs/libxfs/xfs_alloc.c
> >> index 3479294..e1e7fe3 100644
> >> --- a/fs/xfs/libxfs/xfs_alloc.c
> >> +++ b/fs/xfs/libxfs/xfs_alloc.c
> >> @@ -535,6 +535,7 @@ xfs_agfl_write_verify(
> >> }
> >>
> >> const struct xfs_buf_ops xfs_agfl_buf_ops = {
> >> + .name = "xfs_agfl",
> >> .verify_read = xfs_agfl_read_verify,
> >> .verify_write = xfs_agfl_write_verify,
> >> };
> >> @@ -2339,6 +2340,7 @@ xfs_agf_write_verify(
> >> }
> >>
> >> const struct xfs_buf_ops xfs_agf_buf_ops = {
> >> + .name = "xfs_agf",
> >> .verify_read = xfs_agf_read_verify,
> >> .verify_write = xfs_agf_write_verify,
> >> };
> >> diff --git a/fs/xfs/libxfs/xfs_alloc_btree.c b/fs/xfs/libxfs/xfs_alloc_btree.c
> >> index 90de071..eb8bbfe 100644
> >> --- a/fs/xfs/libxfs/xfs_alloc_btree.c
> >> +++ b/fs/xfs/libxfs/xfs_alloc_btree.c
> >> @@ -379,6 +379,7 @@ xfs_allocbt_write_verify(
> >> }
> >>
> >> const struct xfs_buf_ops xfs_allocbt_buf_ops = {
> >> + .name = "xfs_allocbt",
> >> .verify_read = xfs_allocbt_read_verify,
> >> .verify_write = xfs_allocbt_write_verify,
> >> };
> >> diff --git a/fs/xfs/libxfs/xfs_attr_leaf.c b/fs/xfs/libxfs/xfs_attr_leaf.c
> >> index aa187f7..01a5ecf 100644
> >> --- a/fs/xfs/libxfs/xfs_attr_leaf.c
> >> +++ b/fs/xfs/libxfs/xfs_attr_leaf.c
> >> @@ -328,6 +328,7 @@ xfs_attr3_leaf_read_verify(
> >> }
> >>
> >> const struct xfs_buf_ops xfs_attr3_leaf_buf_ops = {
> >> + .name = "xfs_attr3_leaf",
> >> .verify_read = xfs_attr3_leaf_read_verify,
> >> .verify_write = xfs_attr3_leaf_write_verify,
> >> };
> >> diff --git a/fs/xfs/libxfs/xfs_attr_remote.c b/fs/xfs/libxfs/xfs_attr_remote.c
> >> index 5ab95ff..f3ed9bf 100644
> >> --- a/fs/xfs/libxfs/xfs_attr_remote.c
> >> +++ b/fs/xfs/libxfs/xfs_attr_remote.c
> >> @@ -201,6 +201,7 @@ xfs_attr3_rmt_write_verify(
> >> }
> >>
> >> const struct xfs_buf_ops xfs_attr3_rmt_buf_ops = {
> >> + .name = "xfs_attr3_rmt",
> >> .verify_read = xfs_attr3_rmt_read_verify,
> >> .verify_write = xfs_attr3_rmt_write_verify,
> >> };
> >> diff --git a/fs/xfs/libxfs/xfs_bmap_btree.c b/fs/xfs/libxfs/xfs_bmap_btree.c
> >> index 6b0cf65..1637c37 100644
> >> --- a/fs/xfs/libxfs/xfs_bmap_btree.c
> >> +++ b/fs/xfs/libxfs/xfs_bmap_btree.c
> >> @@ -720,6 +720,7 @@ xfs_bmbt_write_verify(
> >> }
> >>
> >> const struct xfs_buf_ops xfs_bmbt_buf_ops = {
> >> + .name = "xfs_bmbt",
> >> .verify_read = xfs_bmbt_read_verify,
> >> .verify_write = xfs_bmbt_write_verify,
> >> };
> >> diff --git a/fs/xfs/libxfs/xfs_da_btree.c b/fs/xfs/libxfs/xfs_da_btree.c
> >> index e89a0f8..097bf77 100644
> >> --- a/fs/xfs/libxfs/xfs_da_btree.c
> >> +++ b/fs/xfs/libxfs/xfs_da_btree.c
> >> @@ -245,6 +245,7 @@ xfs_da3_node_read_verify(
> >> }
> >>
> >> const struct xfs_buf_ops xfs_da3_node_buf_ops = {
> >> + .name = "xfs_da3_node",
> >> .verify_read = xfs_da3_node_read_verify,
> >> .verify_write = xfs_da3_node_write_verify,
> >> };
> >> diff --git a/fs/xfs/libxfs/xfs_dir2_block.c b/fs/xfs/libxfs/xfs_dir2_block.c
> >> index 9c10e2b..aa17cb7 100644
> >> --- a/fs/xfs/libxfs/xfs_dir2_block.c
> >> +++ b/fs/xfs/libxfs/xfs_dir2_block.c
> >> @@ -123,6 +123,7 @@ xfs_dir3_block_write_verify(
> >> }
> >>
> >> const struct xfs_buf_ops xfs_dir3_block_buf_ops = {
> >> + .name = "xfs_dir3_block",
> >> .verify_read = xfs_dir3_block_read_verify,
> >> .verify_write = xfs_dir3_block_write_verify,
> >> };
> >> diff --git a/fs/xfs/libxfs/xfs_dir2_data.c b/fs/xfs/libxfs/xfs_dir2_data.c
> >> index af71a84..725fc78 100644
> >> --- a/fs/xfs/libxfs/xfs_dir2_data.c
> >> +++ b/fs/xfs/libxfs/xfs_dir2_data.c
> >> @@ -305,11 +305,13 @@ xfs_dir3_data_write_verify(
> >> }
> >>
> >> const struct xfs_buf_ops xfs_dir3_data_buf_ops = {
> >> + .name = "xfs_dir3_data",
> >> .verify_read = xfs_dir3_data_read_verify,
> >> .verify_write = xfs_dir3_data_write_verify,
> >> };
> >>
> >> static const struct xfs_buf_ops xfs_dir3_data_reada_buf_ops = {
> >> + .name = "xfs_dir3_data_reada",
> >> .verify_read = xfs_dir3_data_reada_verify,
> >> .verify_write = xfs_dir3_data_write_verify,
> >> };
> >> diff --git a/fs/xfs/libxfs/xfs_dir2_leaf.c b/fs/xfs/libxfs/xfs_dir2_leaf.c
> >> index 3923e1f..b887fb2 100644
> >> --- a/fs/xfs/libxfs/xfs_dir2_leaf.c
> >> +++ b/fs/xfs/libxfs/xfs_dir2_leaf.c
> >> @@ -245,11 +245,13 @@ xfs_dir3_leafn_write_verify(
> >> }
> >>
> >> const struct xfs_buf_ops xfs_dir3_leaf1_buf_ops = {
> >> + .name = "xfs_dir3_leaf1",
> >> .verify_read = xfs_dir3_leaf1_read_verify,
> >> .verify_write = xfs_dir3_leaf1_write_verify,
> >> };
> >>
> >> const struct xfs_buf_ops xfs_dir3_leafn_buf_ops = {
> >> + .name = "xfs_dir3_leafn",
> >> .verify_read = xfs_dir3_leafn_read_verify,
> >> .verify_write = xfs_dir3_leafn_write_verify,
> >> };
> >> diff --git a/fs/xfs/libxfs/xfs_dir2_node.c b/fs/xfs/libxfs/xfs_dir2_node.c
> >> index 70b0cb2..63ee03d 100644
> >> --- a/fs/xfs/libxfs/xfs_dir2_node.c
> >> +++ b/fs/xfs/libxfs/xfs_dir2_node.c
> >> @@ -150,6 +150,7 @@ xfs_dir3_free_write_verify(
> >> }
> >>
> >> const struct xfs_buf_ops xfs_dir3_free_buf_ops = {
> >> + .name = "xfs_dir3_free",
> >> .verify_read = xfs_dir3_free_read_verify,
> >> .verify_write = xfs_dir3_free_write_verify,
> >> };
> >> diff --git a/fs/xfs/libxfs/xfs_dquot_buf.c b/fs/xfs/libxfs/xfs_dquot_buf.c
> >> index 5331b7f..11cefb2 100644
> >> --- a/fs/xfs/libxfs/xfs_dquot_buf.c
> >> +++ b/fs/xfs/libxfs/xfs_dquot_buf.c
> >> @@ -282,6 +282,7 @@ xfs_dquot_buf_write_verify(
> >> }
> >>
> >> const struct xfs_buf_ops xfs_dquot_buf_ops = {
> >> + .name = "xfs_dquot",
> >> .verify_read = xfs_dquot_buf_read_verify,
> >> .verify_write = xfs_dquot_buf_write_verify,
> >> };
> >> diff --git a/fs/xfs/libxfs/xfs_ialloc.c b/fs/xfs/libxfs/xfs_ialloc.c
> >> index 70c1db9..66d702e 100644
> >> --- a/fs/xfs/libxfs/xfs_ialloc.c
> >> +++ b/fs/xfs/libxfs/xfs_ialloc.c
> >> @@ -2572,6 +2572,7 @@ xfs_agi_write_verify(
> >> }
> >>
> >> const struct xfs_buf_ops xfs_agi_buf_ops = {
> >> + .name = "xfs_agi",
> >> .verify_read = xfs_agi_read_verify,
> >> .verify_write = xfs_agi_write_verify,
> >> };
> >> diff --git a/fs/xfs/libxfs/xfs_ialloc_btree.c b/fs/xfs/libxfs/xfs_ialloc_btree.c
> >> index f39b285..6dd44f9 100644
> >> --- a/fs/xfs/libxfs/xfs_ialloc_btree.c
> >> +++ b/fs/xfs/libxfs/xfs_ialloc_btree.c
> >> @@ -304,6 +304,7 @@ xfs_inobt_write_verify(
> >> }
> >>
> >> const struct xfs_buf_ops xfs_inobt_buf_ops = {
> >> + .name = "xfs_inobt",
> >> .verify_read = xfs_inobt_read_verify,
> >> .verify_write = xfs_inobt_write_verify,
> >> };
> >> diff --git a/fs/xfs/libxfs/xfs_inode_buf.c b/fs/xfs/libxfs/xfs_inode_buf.c
> >> index 268c00f..1b8d98a 100644
> >> --- a/fs/xfs/libxfs/xfs_inode_buf.c
> >> +++ b/fs/xfs/libxfs/xfs_inode_buf.c
> >> @@ -132,11 +132,13 @@ xfs_inode_buf_write_verify(
> >> }
> >>
> >> const struct xfs_buf_ops xfs_inode_buf_ops = {
> >> + .name = "xfs_inode",
> >> .verify_read = xfs_inode_buf_read_verify,
> >> .verify_write = xfs_inode_buf_write_verify,
> >> };
> >>
> >> const struct xfs_buf_ops xfs_inode_buf_ra_ops = {
> >> + .name = "xxfs_inode_ra",
> >> .verify_read = xfs_inode_buf_readahead_verify,
> >> .verify_write = xfs_inode_buf_write_verify,
> >> };
> >> diff --git a/fs/xfs/libxfs/xfs_sb.c b/fs/xfs/libxfs/xfs_sb.c
> >> index a0b071d..8a53eaa 100644
> >> --- a/fs/xfs/libxfs/xfs_sb.c
> >> +++ b/fs/xfs/libxfs/xfs_sb.c
> >> @@ -679,11 +679,13 @@ xfs_sb_write_verify(
> >> }
> >>
> >> const struct xfs_buf_ops xfs_sb_buf_ops = {
> >> + .name = "xfs_sb",
> >> .verify_read = xfs_sb_read_verify,
> >> .verify_write = xfs_sb_write_verify,
> >> };
> >>
> >> const struct xfs_buf_ops xfs_sb_quiet_buf_ops = {
> >> + .name = "xfs_sb_quiet",
> >> .verify_read = xfs_sb_quiet_read_verify,
> >> .verify_write = xfs_sb_write_verify,
> >> };
> >> diff --git a/fs/xfs/libxfs/xfs_symlink_remote.c b/fs/xfs/libxfs/xfs_symlink_remote.c
> >> index cb6fd20..2e2c671 100644
> >> --- a/fs/xfs/libxfs/xfs_symlink_remote.c
> >> +++ b/fs/xfs/libxfs/xfs_symlink_remote.c
> >> @@ -168,6 +168,7 @@ xfs_symlink_write_verify(
> >> }
> >>
> >> const struct xfs_buf_ops xfs_symlink_buf_ops = {
> >> + .name = "xfs_symlink",
> >> .verify_read = xfs_symlink_read_verify,
> >> .verify_write = xfs_symlink_write_verify,
> >> };
> >> diff --git a/fs/xfs/xfs_buf.h b/fs/xfs/xfs_buf.h
> >> index c79b717..c75721a 100644
> >> --- a/fs/xfs/xfs_buf.h
> >> +++ b/fs/xfs/xfs_buf.h
> >> @@ -132,6 +132,7 @@ struct xfs_buf_map {
> >> struct xfs_buf_map (map) = { .bm_bn = (blkno), .bm_len = (numblk) };
> >>
> >> struct xfs_buf_ops {
> >> + char *name;
> >> void (*verify_read)(struct xfs_buf *);
> >> void (*verify_write)(struct xfs_buf *);
> >> };
> >> diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c
> >> index 74d0e59..88693a9 100644
> >> --- a/fs/xfs/xfs_error.c
> >> +++ b/fs/xfs/xfs_error.c
> >> @@ -164,9 +164,9 @@ xfs_verifier_error(
> >> {
> >> struct xfs_mount *mp = bp->b_target->bt_mount;
> >>
> >> - xfs_alert(mp, "Metadata %s detected at %pF, block 0x%llx",
> >> + xfs_alert(mp, "Metadata %s detected at %pF, %s block 0x%llx",
> >> bp->b_error == -EFSBADCRC ? "CRC error" : "corruption",
> >> - __return_address, bp->b_bn);
> >> + __return_address, bp->b_ops->name, bp->b_bn);
> >>
> >> xfs_alert(mp, "Unmount and run xfs_repair");
> >>
> >>
> >> _______________________________________________
> >> xfs mailing list
> >> xfs@oss.sgi.com
> >> http://oss.sgi.com/mailman/listinfo/xfs
> >
> > _______________________________________________
> > xfs mailing list
> > xfs@oss.sgi.com
> > http://oss.sgi.com/mailman/listinfo/xfs
> >
>
> _______________________________________________
> xfs mailing list
> xfs@oss.sgi.com
> http://oss.sgi.com/mailman/listinfo/xfs
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
prev parent reply other threads:[~2015-11-12 13:55 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-11 22:13 [PATCH] xfs: print name of verifier if it fails Eric Sandeen
2015-11-12 12:40 ` Brian Foster
2015-11-12 13:41 ` Eric Sandeen
2015-11-12 13:55 ` Brian Foster [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=20151112135541.GD5068@bfoster.bfoster \
--to=bfoster@redhat.com \
--cc=sandeen@sandeen.net \
--cc=xfs@oss.sgi.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.