[Ocfs2-tools-devel] [PATCH 09/12] debugfs.ocfs2: Dump the ocfs2_block_check structure (metaecc)
Sunil Mushran
sunil.mushran at oracle.com
Wed Jan 7 17:52:50 PST 2009
The crc/ecc may look better in hex. Also, I see no point in
printing with N/A. As in, only print if enabled. Suggestions.
Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
Joel Becker wrote:
> The metaecc feature uses the ocfs2_block_check structure. debugfs.ocfs2
> can now dump that field wherever it finds it.
>
> Signed-off-by: Joel Becker <joel.becker at oracle.com>
> ---
> debugfs.ocfs2/dump.c | 22 ++++++++++++++++++++++
> debugfs.ocfs2/include/dump.h | 1 +
> 2 files changed, 23 insertions(+), 0 deletions(-)
>
> diff --git a/debugfs.ocfs2/dump.c b/debugfs.ocfs2/dump.c
> index 2bd2032..2cba747 100644
> --- a/debugfs.ocfs2/dump.c
> +++ b/debugfs.ocfs2/dump.c
> @@ -155,6 +155,20 @@ void dump_fast_symlink (FILE *out, char *link)
> }
>
> /*
> + * dump_block_check
> + *
> + */
> +void dump_block_check(FILE *out, struct ocfs2_block_check *bc)
> +{
> + if (ocfs2_meta_ecc(OCFS2_RAW_SB(gbls.fs->fs_super)))
> + fprintf(out, "\tCRC32: %"PRIu32" ECC: %"PRIu16"\n",
> + le32_to_cpu(bc->bc_crc32e),
> + le16_to_cpu(bc->bc_ecc));
> + else
> + fprintf(out, "\tCRC32: N/A ECC: N/A\n");
> +}
> +
> +/*
> * dump_inode()
> *
> */
> @@ -230,6 +244,8 @@ void dump_inode(FILE *out, struct ocfs2_dinode *in)
> fprintf(out, "\tFS Generation: %u (0x%x)\n", in->i_fs_generation,
> in->i_fs_generation);
>
> + dump_block_check(out, &in->i_check);
> +
> fprintf(out, "\tType: %s Attr: 0x%x Flags: %s\n", str, in->i_attr,
> flags->str);
>
> @@ -378,6 +394,8 @@ void dump_extent_block (FILE *out, struct ocfs2_extent_block *blk)
> fprintf (out, "\tBlknum: %"PRIu64" Next Leaf: %"PRIu64"\n",
> (uint64_t)blk->h_blkno, (uint64_t)blk->h_next_leaf_blk);
>
> + dump_block_check(out, &blk->h_check);
> +
> return ;
> }
>
> @@ -396,6 +414,8 @@ void dump_group_descriptor (FILE *out, struct ocfs2_group_desc *grp,
> grp->bg_chain,
> (uint64_t)grp->bg_parent_dinode,
> grp->bg_generation);
> + dump_block_check(out, &grp->bg_check);
> +
> fprintf(out, "\t## %-15s %-6s %-6s %-6s %-6s %-6s\n",
> "Block#", "Total", "Used", "Free", "Contig", "Size");
> }
> @@ -466,6 +486,8 @@ int dump_dir_trailers(struct ocfs2_dir_entry *rec, int offset, int blocksize,
> "\tDirblock: %-15"PRIu64" Inode: %-15"PRIu64" rec_len: %-4u\n",
> trailer->db_blkno, trailer->db_parent_dinode,
> trailer->db_compat_rec_len);
> + dump_block_check(ctxt->out, &trailer->db_check);
> +
> return 0;
> }
>
> diff --git a/debugfs.ocfs2/include/dump.h b/debugfs.ocfs2/include/dump.h
> index f300559..ecb070a 100644
> --- a/debugfs.ocfs2/include/dump.h
> +++ b/debugfs.ocfs2/include/dump.h
> @@ -64,5 +64,6 @@ void dump_inode_path (FILE *out, uint64_t blkno, char *path);
> void dump_logical_blkno(FILE *out, uint64_t blkno);
> void dump_icheck(FILE *out, int hdr, uint64_t blkno, uint64_t inode,
> int validoffset, uint64_t offset, int status);
> +void dump_block_check(FILE *out, struct ocfs2_block_check *bc);
>
> #endif /* __DUMP_H__ */
>
More information about the Ocfs2-tools-devel
mailing list