mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 11:00:56 +07:00
xfs: Introduce XFS_PTAG_VERIFIER_ERROR panic mask
Currently we have a few PTAGs in place allowing us to transform a filesystem error in a BUG() call. However, we don't have a panic tag for corrupt metadata, so introduce XFS_PTAG_VERIFIER_ERROR so that the administrator can use the fs.xfs.panic_mask sysctl knob to convert any error detected by buffer verifiers into a kernel panic. Signed-off-by: Marco Benatto <mbenatto@redhat.com> Reviewed-by: Eric Sandeen <sandeen@redhat.com> [darrick: light editing of commit message] Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:
parent
e88db81645
commit
d519da41e2
@ -272,7 +272,7 @@ The following sysctls are available for the XFS filesystem:
|
|||||||
XFS_ERRLEVEL_LOW: 1
|
XFS_ERRLEVEL_LOW: 1
|
||||||
XFS_ERRLEVEL_HIGH: 5
|
XFS_ERRLEVEL_HIGH: 5
|
||||||
|
|
||||||
fs.xfs.panic_mask (Min: 0 Default: 0 Max: 255)
|
fs.xfs.panic_mask (Min: 0 Default: 0 Max: 256)
|
||||||
Causes certain error conditions to call BUG(). Value is a bitmask;
|
Causes certain error conditions to call BUG(). Value is a bitmask;
|
||||||
OR together the tags which represent errors which should cause panics:
|
OR together the tags which represent errors which should cause panics:
|
||||||
|
|
||||||
@ -285,6 +285,7 @@ The following sysctls are available for the XFS filesystem:
|
|||||||
XFS_PTAG_SHUTDOWN_IOERROR 0x00000020
|
XFS_PTAG_SHUTDOWN_IOERROR 0x00000020
|
||||||
XFS_PTAG_SHUTDOWN_LOGERROR 0x00000040
|
XFS_PTAG_SHUTDOWN_LOGERROR 0x00000040
|
||||||
XFS_PTAG_FSBLOCK_ZERO 0x00000080
|
XFS_PTAG_FSBLOCK_ZERO 0x00000080
|
||||||
|
XFS_PTAG_VERIFIER_ERROR 0x00000100
|
||||||
|
|
||||||
This option is intended for debugging only.
|
This option is intended for debugging only.
|
||||||
|
|
||||||
|
@ -357,7 +357,8 @@ xfs_buf_verifier_error(
|
|||||||
fa = failaddr ? failaddr : __return_address;
|
fa = failaddr ? failaddr : __return_address;
|
||||||
__xfs_buf_ioerror(bp, error, fa);
|
__xfs_buf_ioerror(bp, error, fa);
|
||||||
|
|
||||||
xfs_alert(mp, "Metadata %s detected at %pS, %s block 0x%llx %s",
|
xfs_alert_tag(mp, XFS_PTAG_VERIFIER_ERROR,
|
||||||
|
"Metadata %s detected at %pS, %s block 0x%llx %s",
|
||||||
bp->b_error == -EFSBADCRC ? "CRC error" : "corruption",
|
bp->b_error == -EFSBADCRC ? "CRC error" : "corruption",
|
||||||
fa, bp->b_ops->name, bp->b_bn, name);
|
fa, bp->b_ops->name, bp->b_bn, name);
|
||||||
|
|
||||||
|
@ -98,5 +98,6 @@ extern int xfs_errortag_clearall(struct xfs_mount *mp);
|
|||||||
#define XFS_PTAG_SHUTDOWN_IOERROR 0x00000020
|
#define XFS_PTAG_SHUTDOWN_IOERROR 0x00000020
|
||||||
#define XFS_PTAG_SHUTDOWN_LOGERROR 0x00000040
|
#define XFS_PTAG_SHUTDOWN_LOGERROR 0x00000040
|
||||||
#define XFS_PTAG_FSBLOCK_ZERO 0x00000080
|
#define XFS_PTAG_FSBLOCK_ZERO 0x00000080
|
||||||
|
#define XFS_PTAG_VERIFIER_ERROR 0x00000100
|
||||||
|
|
||||||
#endif /* __XFS_ERROR_H__ */
|
#endif /* __XFS_ERROR_H__ */
|
||||||
|
@ -16,7 +16,7 @@ xfs_param_t xfs_params = {
|
|||||||
/* MIN DFLT MAX */
|
/* MIN DFLT MAX */
|
||||||
.sgid_inherit = { 0, 0, 1 },
|
.sgid_inherit = { 0, 0, 1 },
|
||||||
.symlink_mode = { 0, 0, 1 },
|
.symlink_mode = { 0, 0, 1 },
|
||||||
.panic_mask = { 0, 0, 255 },
|
.panic_mask = { 0, 0, 256 },
|
||||||
.error_level = { 0, 3, 11 },
|
.error_level = { 0, 3, 11 },
|
||||||
.syncd_timer = { 1*100, 30*100, 7200*100},
|
.syncd_timer = { 1*100, 30*100, 7200*100},
|
||||||
.stats_clear = { 0, 0, 1 },
|
.stats_clear = { 0, 0, 1 },
|
||||||
|
Loading…
Reference in New Issue
Block a user