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;
}
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
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
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;
}
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;
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);
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;
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:
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;
}
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;
}
* 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;
* 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;