|
@@ -178,3 +178,28 @@ xfs_corruption_error(
|
|
xfs_error_report(tag, level, mp, filename, linenum, ra);
|
|
xfs_error_report(tag, level, mp, filename, linenum, ra);
|
|
xfs_alert(mp, "Corruption detected. Unmount and run xfs_repair");
|
|
xfs_alert(mp, "Corruption detected. Unmount and run xfs_repair");
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * Warnings specifically for verifier errors. Differentiate CRC vs. invalid
|
|
|
|
+ * values, and omit the stack trace unless the error level is tuned high.
|
|
|
|
+ */
|
|
|
|
+void
|
|
|
|
+xfs_verifier_error(
|
|
|
|
+ struct xfs_buf *bp)
|
|
|
|
+{
|
|
|
|
+ struct xfs_mount *mp = bp->b_target->bt_mount;
|
|
|
|
+
|
|
|
|
+ xfs_alert(mp, "Metadata %s detected at %pF, block 0x%llx",
|
|
|
|
+ bp->b_error == EFSBADCRC ? "CRC error" : "corruption",
|
|
|
|
+ __return_address, bp->b_bn);
|
|
|
|
+
|
|
|
|
+ xfs_alert(mp, "Unmount and run xfs_repair");
|
|
|
|
+
|
|
|
|
+ if (xfs_error_level >= XFS_ERRLEVEL_LOW) {
|
|
|
|
+ xfs_alert(mp, "First 64 bytes of corrupted metadata buffer:");
|
|
|
|
+ xfs_hex_dump(xfs_buf_offset(bp, 0), 64);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (xfs_error_level >= XFS_ERRLEVEL_HIGH)
|
|
|
|
+ xfs_stack_trace();
|
|
|
|
+}
|