@@ -95,6 +95,7 @@
#define xfs_dinode_calc_crc libxfs_dinode_calc_crc
#define xfs_dinode_good_version libxfs_dinode_good_version
#define xfs_dinode_verify libxfs_dinode_verify
+#define xfs_dinode_verify_metaflag libxfs_dinode_verify_metaflag
#define xfs_dir2_data_bestfree_p libxfs_dir2_data_bestfree_p
#define xfs_dir2_data_entry_tag_p libxfs_dir2_data_entry_tag_p
@@ -2662,6 +2662,20 @@ _("bad (negative) size %" PRId64 " on inode %" PRIu64 "\n"),
}
}
+ if (flags2 & XFS_DIFLAG2_METADATA) {
+ xfs_failaddr_t fa;
+
+ fa = libxfs_dinode_verify_metaflag(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) {