From c90ffa217dddaea9b89cd422b74ce7a0fed1f1db Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Tue, 12 Nov 2024 10:07:53 +0100 Subject: [PATCH] fixup --- db/btdump.c | 22 ++++++++++++---------- db/inode.c | 4 ++-- db/metadump.c | 10 +++++----- repair/dinode.c | 30 +++++++++++++++++------------- repair/rmap.c | 15 ++++++--------- repair/rtrefcount_repair.c | 2 +- repair/rtrmap_repair.c | 2 +- 7 files changed, 44 insertions(+), 41 deletions(-) diff --git a/db/btdump.c b/db/btdump.c index 31f32a8f7..5866421d7 100644 --- a/db/btdump.c +++ b/db/btdump.c @@ -444,41 +444,43 @@ err: static bool is_btree_inode(void) { - struct xfs_dinode *dip; + struct xfs_dinode *dip = iocur_top->data; - dip = iocur_top->data; - return dip->di_format == XFS_DINODE_FMT_RMAP || - dip->di_format == XFS_DINODE_FMT_REFCOUNT; + return dip->di_format == XFS_DINODE_FMT_META_BTREE; } static int dump_btree_inode( bool dump_node_blocks) { + struct xfs_dinode *dip = iocur_top->data; char *prefix; - struct xfs_dinode *dip; struct xfs_rtrmap_root *rtrmap; struct xfs_rtrefcount_root *rtrefc; int level; int numrecs; int ret; - dip = iocur_top->data; - switch (dip->di_format) { - case XFS_DINODE_FMT_RMAP: + if (dip->di_format != XFS_DINODE_FMT_META_BTREE) { + dbprintf("Unknown metadata inode format %u\n", dip->di_format); + return 0; + } + switch (be16_to_cpu(dip->di_metatype)) { + case XFS_METAFILE_RTRMAP: prefix = "u3.rtrmapbt"; rtrmap = (struct xfs_rtrmap_root *)XFS_DFORK_DPTR(dip); level = be16_to_cpu(rtrmap->bb_level); numrecs = be16_to_cpu(rtrmap->bb_numrecs); break; - case XFS_DINODE_FMT_REFCOUNT: + case XFS_METAFILE_RTREFCOUNT: prefix = "u3.rtrefcbt"; rtrefc = (struct xfs_rtrefcount_root *)XFS_DFORK_DPTR(dip); level = be16_to_cpu(rtrefc->bb_level); numrecs = be16_to_cpu(rtrefc->bb_numrecs); break; default: - dbprintf("Unknown metadata inode type %u\n", dip->di_format); + dbprintf("Unknown metadata inode type %u\n", + be16_to_cpu(dip->di_metatype)); return 0; } diff --git a/db/inode.c b/db/inode.c index ad104dbb7..ddc3a4f89 100644 --- a/db/inode.c +++ b/db/inode.c @@ -887,7 +887,7 @@ inode_u_rtrmapbt_count( ASSERT(obj == iocur_top->data); dip = obj; ASSERT((char *)XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); - return dip->di_format == XFS_DINODE_FMT_RMAP; + return be16_to_cpu(dip->di_metatype) == XFS_METAFILE_RTRMAP; } static int @@ -901,7 +901,7 @@ inode_u_rtrefcbt_count( ASSERT(obj == iocur_top->data); dip = obj; ASSERT((char *)XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); - return dip->di_format == XFS_DINODE_FMT_REFCOUNT; + return be16_to_cpu(dip->di_metatype) == XFS_METAFILE_RTREFCOUNT; } int diff --git a/db/metadump.c b/db/metadump.c index 7fb14c252..ad821b4ab 100644 --- a/db/metadump.c +++ b/db/metadump.c @@ -2591,11 +2591,11 @@ process_inode_data( case XFS_DINODE_FMT_BTREE: return process_btinode(dip, XFS_DATA_FORK); - case XFS_DINODE_FMT_RMAP: - return process_rtrmap(dip); - - case XFS_DINODE_FMT_REFCOUNT: - return process_rtrefc(dip); + case XFS_DINODE_FMT_META_BTREE: + if (be16_to_cpu(dip->di_metatype) == XFS_METAFILE_RTRMAP) + return process_rtrmap(dip); + if (be16_to_cpu(dip->di_metatype) == XFS_METAFILE_RTREFCOUNT) + return process_rtrefc(dip); } return 1; } diff --git a/repair/dinode.c b/repair/dinode.c index 30395ef1d..08826b14d 100644 --- a/repair/dinode.c +++ b/repair/dinode.c @@ -2064,10 +2064,9 @@ check_dinode_mode_format( case S_IFREG: switch (dinoc->di_format) { - case XFS_DINODE_FMT_RMAP: case XFS_DINODE_FMT_EXTENTS: case XFS_DINODE_FMT_BTREE: - case XFS_DINODE_FMT_REFCOUNT: + case XFS_DINODE_FMT_META_BTREE: return 0; } return -1; @@ -2330,9 +2329,8 @@ _("bad attr fork offset %d in dev inode %" PRIu64 ", should be %d\n"), return 1; } break; - case XFS_DINODE_FMT_RMAP: - case XFS_DINODE_FMT_REFCOUNT: - if (!(xfs_has_metadir(mp) && xfs_has_parent(mp))) { + case XFS_DINODE_FMT_META_BTREE: + if (!xfs_has_metadir(mp) || !xfs_has_parent(mp)) { do_warn( _("metadata inode %" PRIu64 " type %d cannot have attr fork\n"), lino, dino->di_format); @@ -2524,13 +2522,20 @@ retry: totblocks, nextents, dblkmap, XFS_DATA_FORK, check_dups, zap_metadata); break; - case XFS_DINODE_FMT_RMAP: - err = process_rtrmap(mp, agno, ino, dino, type, dirty, + case XFS_DINODE_FMT_META_BTREE: + switch (be16_to_cpu(dino->di_metatype)) { + case XFS_METAFILE_RTRMAP: + err = process_rtrmap(mp, agno, ino, dino, type, dirty, + totblocks, nextents, dblkmap, + check_dups); + break; + case XFS_METAFILE_RTREFCOUNT: + err = process_rtrefc(mp, agno, ino, dino, type, dirty, totblocks, nextents, dblkmap, check_dups); - break; - case XFS_DINODE_FMT_REFCOUNT: - err = process_rtrefc(mp, agno, ino, dino, type, dirty, - totblocks, nextents, dblkmap, check_dups); + break; + default: + break; + } break; case XFS_DINODE_FMT_DEV: err = 0; @@ -2591,8 +2596,7 @@ _("would have tried to rebuild inode %"PRIu64" data fork\n"), XFS_DATA_FORK, 0, zap_metadata); break; case XFS_DINODE_FMT_DEV: - case XFS_DINODE_FMT_RMAP: - case XFS_DINODE_FMT_REFCOUNT: + case XFS_DINODE_FMT_META_BTREE: err = 0; break; default: diff --git a/repair/rmap.c b/repair/rmap.c index 2debfcbf9..adf2edc64 100644 --- a/repair/rmap.c +++ b/repair/rmap.c @@ -1425,11 +1425,10 @@ rtrmaps_verify_btree( goto err_rtg; } - if (ip->i_df.if_format != XFS_DINODE_FMT_RMAP) { + if (ip->i_metatype != XFS_METAFILE_RTRMAP) { do_warn( -_("rtgroup %u rmap inode has wrong format 0x%x, expected 0x%x\n"), - rgno, ip->i_df.if_format, - XFS_DINODE_FMT_RMAP); +_("rtgroup %u rmap inode has wrong metatype 0x%x, expected 0x%x\n"), + rgno, ip->i_metatype, XFS_METAFILE_RTRMAP); goto err_rtg; } @@ -1884,12 +1883,10 @@ check_rtrefcounts( goto err_rtg; } - if (ip->i_df.if_format != XFS_DINODE_FMT_REFCOUNT) { + if (ip->i_metatype != XFS_METAFILE_RTREFCOUNT) { do_warn( -_("rtgroup %u refcount inode has wrong format 0x%x, expected 0x%x\n"), - rgno, - ip->i_df.if_format, - XFS_DINODE_FMT_REFCOUNT); +_("rtgroup %u refcount inode has wrong metatype 0x%x, expected 0x%x\n"), + rgno, ip->i_metatype, XFS_METAFILE_RTREFCOUNT); goto err_rtg; } diff --git a/repair/rtrefcount_repair.c b/repair/rtrefcount_repair.c index 31d075ba9..e219904cc 100644 --- a/repair/rtrefcount_repair.c +++ b/repair/rtrefcount_repair.c @@ -185,7 +185,7 @@ xrep_rtrefc_build_new_tree( * inode locked. */ libxfs_trans_ijoin(sc->tp, sc->ip, 0); - ifake->if_fork->if_format = XFS_DINODE_FMT_REFCOUNT; + ifake->if_fork->if_format = XFS_DINODE_FMT_META_BTREE; error = xrep_rtrefc_btree_load(rr, cur); if (error) goto err_cur; diff --git a/repair/rtrmap_repair.c b/repair/rtrmap_repair.c index a4c840897..d1ce986f8 100644 --- a/repair/rtrmap_repair.c +++ b/repair/rtrmap_repair.c @@ -190,7 +190,7 @@ xrep_rtrmap_build_new_tree( * inode locked. */ libxfs_trans_ijoin(sc->tp, sc->ip, 0); - ifake->if_fork->if_format = XFS_DINODE_FMT_RMAP; + ifake->if_fork->if_format = XFS_DINODE_FMT_META_BTREE; error = xrep_rtrmap_btree_load(rr, cur); if (error) goto err_cur; -- 2.50.1