]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
xfs: refactor inode verifier error logging
authorDarrick J. Wong <darrick.wong@oracle.com>
Fri, 23 Mar 2018 17:06:52 +0000 (10:06 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Sat, 24 Mar 2018 01:05:07 +0000 (18:05 -0700)
Refactor some of the inode verifier failure logging call sites to use
the new xfs_inode_verifier_error method which dumps the offending buffer
as well as the code location of the failed check.  This trims the
output, makes it clearer to the admin that repair must be run, and gives
the developers more details to work from.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
fs/xfs/libxfs/xfs_bmap.c
fs/xfs/libxfs/xfs_inode_fork.c

index 91214f21563c27e4f69e3b7ea3a559db85695a3b..3b03d886df6640d4fea3185420bbc76eccf85490 100644 (file)
@@ -1244,8 +1244,9 @@ xfs_iread_extents(
                        xfs_warn(ip->i_mount,
                                "corrupt dinode %Lu, (btree extents).",
                                (unsigned long long) ip->i_ino);
-                       XFS_CORRUPTION_ERROR(__func__,
-                               XFS_ERRLEVEL_LOW, ip->i_mount, block);
+                       xfs_inode_verifier_error(ip, -EFSCORRUPTED,
+                                       __func__, block, sizeof(*block),
+                                       __this_address);
                        error = -EFSCORRUPTED;
                        goto out_brelse;
                }
index 613fba22ae4ed6790eb71d5fa46ed0b6fe1f6952..701c42a28d05299c4284075759e10dca9b615b58 100644 (file)
@@ -195,8 +195,9 @@ xfs_iformat_local(
        "corrupt inode %Lu (bad size %d for local fork, size = %d).",
                        (unsigned long long) ip->i_ino, size,
                        XFS_DFORK_SIZE(dip, ip->i_mount, whichfork));
-               XFS_CORRUPTION_ERROR("xfs_iformat_local", XFS_ERRLEVEL_LOW,
-                                    ip->i_mount, dip);
+               xfs_inode_verifier_error(ip, -EFSCORRUPTED,
+                               "xfs_iformat_local", dip, sizeof(*dip),
+                               __this_address);
                return -EFSCORRUPTED;
        }
 
@@ -231,8 +232,9 @@ xfs_iformat_extents(
        if (unlikely(size < 0 || size > XFS_DFORK_SIZE(dip, mp, whichfork))) {
                xfs_warn(ip->i_mount, "corrupt inode %Lu ((a)extents = %d).",
                        (unsigned long long) ip->i_ino, nex);
-               XFS_CORRUPTION_ERROR("xfs_iformat_extents(1)", XFS_ERRLEVEL_LOW,
-                                    mp, dip);
+               xfs_inode_verifier_error(ip, -EFSCORRUPTED,
+                               "xfs_iformat_extents(1)", dip, sizeof(*dip),
+                               __this_address);
                return -EFSCORRUPTED;
        }
 
@@ -309,8 +311,9 @@ xfs_iformat_btree(
                     level == 0 || level > XFS_BTREE_MAXLEVELS) {
                xfs_warn(mp, "corrupt inode %Lu (btree).",
                                        (unsigned long long) ip->i_ino);
-               XFS_CORRUPTION_ERROR("xfs_iformat_btree", XFS_ERRLEVEL_LOW,
-                                        mp, dip);
+               xfs_inode_verifier_error(ip, -EFSCORRUPTED,
+                               "xfs_iformat_btree", dfp, size,
+                               __this_address);
                return -EFSCORRUPTED;
        }