Re: [PATCH] db: fix AGI ops definition in CRC type table

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Oct 13, 2015 at 03:17:01PM +1100, Dave Chinner wrote:
> From: Dave Chinner <dchinner@xxxxxxxxxx>
> 
> The wrong buffer ops structure was added to the AGI field of the
> type table when initially committed. This was not noticed because it
> only affects manually setting the type of a buffer from xfs_db. e.g
> 
> xfs_db> agi 0
> xfs_db> p
> .....
> crc = 0xbc58d757 (correct)
> .....
> xfs_db> fsb 2
> xfs_db> type agi
> Metadata CRC error detected at block 0x10/0x1000
> xfs_db>
> 
> This is because (trimmed for clarity):
> 
> Breakpoint 1, xfs_verifier_error:
> (gdb) bt
> #0  xfs_verifier_error
> #1  xfs_agfl_read_verify
> #2  set_iocur_type
> #3  type_f
> #4  main
> 
> It's clear that the wrong verifier is being run (AGFL, not AGI).
> The fix is simple.

Looks reasonable, so you can add my reviewed-by if you like.

For my part I'm still figuring out how to fix this:

xfs_db> agf 2
xfs_db> type agi
Metadata CRC error detected at block 0x10/0x1000
xfs_db> p
Segmentation fault

Granted, trying to print the AGF fields of an AGI block doesn't make sense, but
I feel like xfs_db should probably have a better reaction than crashing.

--D

> 
> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
> ---
>  db/type.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/db/type.c b/db/type.c
> index 955986b..1da7ee1 100644
> --- a/db/type.c
> +++ b/db/type.c
> @@ -77,7 +77,7 @@ static const typ_t	__typtab[] = {
>  static const typ_t	__typtab_crc[] = {
>  	{ TYP_AGF, "agf", handle_struct, agf_hfld, &xfs_agf_buf_ops },
>  	{ TYP_AGFL, "agfl", handle_struct, agfl_crc_hfld, &xfs_agfl_buf_ops },
> -	{ TYP_AGI, "agi", handle_struct, agi_hfld, &xfs_agfl_buf_ops },
> +	{ TYP_AGI, "agi", handle_struct, agi_hfld, &xfs_agi_buf_ops },
>  	{ TYP_ATTR, "attr3", handle_struct, attr3_hfld,
>  		&xfs_attr3_db_buf_ops },
>  	{ TYP_BMAPBTA, "bmapbta", handle_struct, bmapbta_crc_hfld,
> @@ -113,7 +113,7 @@ static const typ_t	__typtab_crc[] = {
>  static const typ_t	__typtab_spcrc[] = {
>  	{ TYP_AGF, "agf", handle_struct, agf_hfld, &xfs_agf_buf_ops },
>  	{ TYP_AGFL, "agfl", handle_struct, agfl_crc_hfld, &xfs_agfl_buf_ops },
> -	{ TYP_AGI, "agi", handle_struct, agi_hfld, &xfs_agfl_buf_ops },
> +	{ TYP_AGI, "agi", handle_struct, agi_hfld, &xfs_agi_buf_ops },
>  	{ TYP_ATTR, "attr3", handle_struct, attr3_hfld,
>  		&xfs_attr3_db_buf_ops },
>  	{ TYP_BMAPBTA, "bmapbta", handle_struct, bmapbta_crc_hfld,
> -- 
> 2.5.0
> 
> _______________________________________________
> xfs mailing list
> xfs@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs



[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux