]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
db: fix AGI ops definition in CRC type table
authorDave Chinner <dchinner@redhat.com>
Wed, 14 Oct 2015 00:05:23 +0000 (11:05 +1100)
committerDave Chinner <david@fromorbit.com>
Wed, 14 Oct 2015 00:05:23 +0000 (11:05 +1100)
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.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
db/type.c

index 955986bfabad8c27e9a4cc75ec87e021f6f156e4..1da7ee10766f09a5f85a20949182fcee727610eb 100644 (file)
--- 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,