From: Darrick J. Wong <djwong@xxxxxxxxxx> Check whether or not the metadata inode flag is set appropriately. Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> --- repair/dinode.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/repair/dinode.c b/repair/dinode.c index f2da4325d5e..4af7c91d5c9 100644 --- a/repair/dinode.c +++ b/repair/dinode.c @@ -2669,6 +2669,20 @@ _("bad (negative) size %" PRId64 " on inode %" PRIu64 "\n"), } } + if (flags2 & XFS_DIFLAG2_METADIR) { + xfs_failaddr_t fa; + + fa = libxfs_dinode_verify_metadir(mp, dino, di_mode, + be16_to_cpu(dino->di_flags), flags2); + if (fa) { + if (!uncertain) + do_warn( + _("inode %" PRIu64 " is incorrectly marked as metadata\n"), + lino); + goto clear_bad_out; + } + } + if ((flags2 & XFS_DIFLAG2_REFLINK) && !xfs_has_reflink(mp)) { if (!uncertain) {