[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