linux/fs/xfs/libxfs
Darrick J. Wong 50645ce882 xfs: report fs corruption errors to the health tracking system
Whenever we encounter corrupt fs metadata, we should report that to the
health monitoring system for later reporting.  A convenient program for
identifying places to insert xfs_*_mark_sick calls is as follows:

#!/bin/bash

# Detect missing calls to xfs_*_mark_sick

filter=cat
tty -s && filter=less

git grep -B3 EFSCORRUPTED fs/xfs/*.[ch] fs/xfs/libxfs/*.[ch] fs/xfs/scrub/*.[ch] | awk '
BEGIN {
	ignore = 0;
	lineno = 0;
	delete lines;
}
{
	if ($0 == "--") {
		if (!ignore) {
			for (i = 0; i < lineno; i++) {
				print(lines[i]);
			}
			printf("--\n");
		}
		delete lines;
		lineno = 0;
		ignore = 0;
	} else if ($0 ~ /mark_sick/) {
		ignore = 1;
	} else if ($0 ~ /if .fa/) {
		ignore = 1;
	} else if ($0 ~ /failaddr/) {
		ignore = 1;
	} else if ($0 ~ /_verifier_error/) {
		ignore = 1;
	} else if ($0 ~ /^ \* .*EFSCORRUPTED/) {
		ignore = 1;
	} else if ($0 ~ /== -EFSCORRUPTED/) {
		ignore = 1;
	} else if ($0 ~ /!= -EFSCORRUPTED/) {
		ignore = 1;
	} else {
		lines[lineno++] = $0;
	}
}
' | $filter

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
2024-02-22 12:31:02 -08:00
..
xfs_ag_resv.c xfs: repair free space btrees 2023-12-15 10:03:32 -08:00
xfs_ag_resv.h xfs: move perag structure and setup to libxfs/xfs_ag.[ch] 2021-06-02 10:48:24 +10:00
xfs_ag.c xfs: report fs corruption errors to the health tracking system 2024-02-22 12:31:02 -08:00
xfs_ag.h xfs: fix perag leak when growfs fails 2023-12-22 10:52:42 +05:30
xfs_alloc_btree.c xfs: repair free space btrees 2023-12-15 10:03:32 -08:00
xfs_alloc_btree.h xfs: use separate btree cursor cache for each btree type 2021-10-19 11:45:16 -07:00
xfs_alloc.c xfs: repair free space btrees 2023-12-15 10:03:32 -08:00
xfs_alloc.h xfs: repair free space btrees 2023-12-15 10:03:32 -08:00
xfs_attr_leaf.c xfs: convert remaining kmem_free() to kfree() 2024-02-13 18:07:34 +05:30
xfs_attr_leaf.h xfs: remove struct xfs_attr_shortform 2023-12-29 13:37:05 +05:30
xfs_attr_remote.c xfs: Replace xfs_isilocked with xfs_assert_ilocked 2024-02-19 21:19:33 +05:30
xfs_attr_remote.h xfs: rename struct xfs_attr_item to xfs_attr_intent 2022-05-22 16:00:26 +10:00
xfs_attr_sf.h xfs: remove xfs_attr_sf_hdr_t 2023-12-29 13:37:05 +05:30
xfs_attr.c xfs: Replace xfs_isilocked with xfs_assert_ilocked 2024-02-19 21:19:33 +05:30
xfs_attr.h xfs: replace XFS_IFORK_Q with a proper predicate function 2022-07-12 11:17:27 -07:00
xfs_bit.c
xfs_bit.h
xfs_bmap_btree.c xfs: repair inode fork block mapping data structures 2023-12-15 10:03:39 -08:00
xfs_bmap_btree.h xfs: repair inode fork block mapping data structures 2023-12-15 10:03:39 -08:00
xfs_bmap.c xfs: Replace xfs_isilocked with xfs_assert_ilocked 2024-02-19 21:19:33 +05:30
xfs_bmap.h xfs: also use xfs_bmap_btalloc_accounting for RT allocations 2023-12-22 11:18:11 +05:30
xfs_btree_staging.c xfs: clean up remaining GFP_NOFS users 2024-02-13 18:07:35 +05:30
xfs_btree_staging.h xfs: repair inode fork block mapping data structures 2023-12-15 10:03:39 -08:00
xfs_btree.c xfs: convert remaining kmem_free() to kfree() 2024-02-13 18:07:34 +05:30
xfs_btree.h xfs: use __GFP_NOLOCKDEP instead of GFP_NOFS 2024-02-13 18:07:34 +05:30
xfs_cksum.h
xfs_da_btree.c xfs: use __GFP_NOLOCKDEP instead of GFP_NOFS 2024-02-13 18:07:34 +05:30
xfs_da_btree.h xfs: extract xfs_da_buf_copy() helper function 2023-12-07 14:57:14 +05:30
xfs_da_format.h xfs: create a macro for decoding ftypes in tracepoints 2024-02-22 12:30:50 -08:00
xfs_defer.c xfs: Replace xfs_isilocked with xfs_assert_ilocked 2024-02-19 21:19:33 +05:30
xfs_defer.h xfs: pass the defer ops directly to xfs_defer_add 2023-12-14 11:13:52 +05:30
xfs_dir2_block.c xfs: convert remaining kmem_free() to kfree() 2024-02-13 18:07:34 +05:30
xfs_dir2_data.c xfs: convert bp->b_bn references to xfs_buf_daddr() 2021-08-19 10:07:15 -07:00
xfs_dir2_leaf.c xfs: fix exception caused by unexpected illegal bestcount in leaf dir 2022-10-20 09:42:56 -07:00
xfs_dir2_node.c xfs: convert bp->b_bn references to xfs_buf_daddr() 2021-08-19 10:07:15 -07:00
xfs_dir2_priv.h xfs: zap broken inode forks 2023-12-15 10:03:37 -08:00
xfs_dir2_sf.c xfs: convert remaining kmem_free() to kfree() 2024-02-13 18:07:34 +05:30
xfs_dir2.c xfs: create a static name for the dot entry too 2024-02-22 12:30:48 -08:00
xfs_dir2.h xfs: create a predicate to determine if two xfs_names are the same 2024-02-22 12:30:49 -08:00
xfs_dquot_buf.c xfs: remove the xfs_dqblk_t typedef 2021-10-14 09:19:33 -07:00
xfs_errortag.h xfs: add debug knob to slow down write for fun 2022-11-28 17:54:49 -08:00
xfs_format.h xfs: remove XFS_RTMIN/XFS_RTMAX 2023-12-22 11:18:14 +05:30
xfs_fs.h xfs: teach scrub to check file nlinks 2024-02-22 12:30:58 -08:00
xfs_health.h xfs: separate the marking of sick and checked metadata 2024-02-22 12:31:01 -08:00
xfs_ialloc_btree.c xfs: remove __xfs_free_extent_later 2023-12-06 18:45:18 -08:00
xfs_ialloc_btree.h xfs: standardize ondisk to incore conversion for inode btrees 2023-04-11 19:00:01 -07:00
xfs_ialloc.c xfs: repair inode btrees 2023-12-15 10:03:32 -08:00
xfs_ialloc.h xfs: repair inode btrees 2023-12-15 10:03:32 -08:00
xfs_iext_tree.c xfs: use __GFP_NOLOCKDEP instead of GFP_NOFS 2024-02-13 18:07:34 +05:30
xfs_inode_buf.c xfs: inode recovery does not validate the recovered inode 2023-11-13 09:11:41 +05:30
xfs_inode_buf.h xfs: kill xfs_sb_version_has_v3inode() 2021-08-19 10:07:14 -07:00
xfs_inode_fork.c xfs: Replace xfs_isilocked with xfs_assert_ilocked 2024-02-19 21:19:33 +05:30
xfs_inode_fork.h xfs: return if_data from xfs_idata_realloc 2023-12-29 13:37:04 +05:30
xfs_log_format.h xfs: fix AGF vs inode cluster buffer deadlock 2023-06-05 04:08:27 +10:00
xfs_log_recover.h xfs: pass the defer ops instead of type to xfs_defer_start_recovery 2023-12-14 11:13:38 +05:30
xfs_log_rlimit.c xfs: reduce transaction reservations with reflink 2022-04-28 10:25:42 -07:00
xfs_ondisk.h xfs: remove struct xfs_attr_shortform 2023-12-29 13:37:05 +05:30
xfs_quota_defs.h xfs: remove warning counters from struct xfs_dquot_res 2022-05-11 17:12:09 +10:00
xfs_refcount_btree.c xfs: repair refcount btrees 2023-12-15 10:03:33 -08:00
xfs_refcount_btree.h xfs: use separate btree cursor cache for each btree type 2021-10-19 11:45:16 -07:00
xfs_refcount.c xfs: use GFP_KERNEL in pure transaction contexts 2024-02-13 18:07:35 +05:30
xfs_refcount.h xfs: create a ranged query function for refcount btrees 2023-12-15 10:03:40 -08:00
xfs_rmap_btree.c xfs: implement masked btree key comparisons for _has_records scans 2023-04-11 19:00:11 -07:00
xfs_rmap_btree.h xfs: use separate btree cursor cache for each btree type 2021-10-19 11:45:16 -07:00
xfs_rmap.c xfs: use GFP_KERNEL in pure transaction contexts 2024-02-13 18:07:35 +05:30
xfs_rmap.h xfs: teach scrub to check for sole ownership of metadata objects 2023-04-11 19:00:15 -07:00
xfs_rtbitmap.c xfs: Replace xfs_isilocked with xfs_assert_ilocked 2024-02-19 21:19:33 +05:30
xfs_rtbitmap.h xfs: remove conditional building of rt geometry validator functions 2024-01-30 14:04:43 +05:30
xfs_sb.c xfs: remove conditional building of rt geometry validator functions 2024-01-30 14:04:43 +05:30
xfs_sb.h xfs: remove conditional building of rt geometry validator functions 2024-01-30 14:04:43 +05:30
xfs_shared.h xfs: zap broken inode forks 2023-12-15 10:03:37 -08:00
xfs_symlink_remote.c xfs: make if_data a void pointer 2023-12-29 13:37:03 +05:30
xfs_trans_inode.c xfs: Replace xfs_isilocked with xfs_assert_ilocked 2024-02-19 21:19:33 +05:30
xfs_trans_resv.c xfs: create helpers for rtbitmap block/wordcount computations 2023-10-18 10:58:58 -07:00
xfs_trans_resv.h xfs: rename xfs_*alloc*_log_count to _block_count 2022-04-28 10:25:59 -07:00
xfs_trans_space.h xfs: compute the maximum height of the rmap btree when reflink enabled 2021-10-19 11:45:16 -07:00
xfs_types.c xfs: rename xfs_verify_rtext to xfs_verify_rtbext 2023-10-17 16:24:22 -07:00
xfs_types.h xfs: remove conditional building of rt geometry validator functions 2024-01-30 14:04:43 +05:30