]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_repair: check for impossible rmap record field combinations
authorDarrick J. Wong <darrick.wong@oracle.com>
Fri, 19 Aug 2016 00:52:41 +0000 (10:52 +1000)
committerDave Chinner <david@fromorbit.com>
Fri, 19 Aug 2016 00:52:41 +0000 (10:52 +1000)
Make sure there are no records or keys with impossible field
combinations, such as non-inode records with offsets or flags.

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

index 807a236945965ece4a37879832483d47acb939c4..9a46dd053e4d8797f7379422856ef3e56bb42962 100644 (file)
@@ -1011,6 +1011,18 @@ _("%s rmap btree block claimed (state %d), agno %d, bno %d, suspect %d\n"),
        _("invalid owner in rmap btree record %d (%"PRId64" %u) block %u/%u\n"),
                                                i, owner, len, agno, bno);
 
+                       /* Look for impossible record field combinations. */
+                       if (XFS_RMAP_NON_INODE_OWNER(key.rm_owner)) {
+                               if (key.rm_flags)
+                                       do_warn(
+       _("record %d of block (%u/%u) in %s btree cannot have non-inode owner with flags\n"),
+                                               i, agno, bno, name);
+                               if (key.rm_offset)
+                                       do_warn(
+       _("record %d of block (%u/%u) in %s btree cannot have non-inode owner with offset\n"),
+                                               i, agno, bno, name);
+                       }
+
                        /* Check for out of order records. */
                        if (i == 0) {
 advance: