linux/fs/xfs/scrub
Darrick J. Wong afbabf5630 xfs: drop all altpath buffers at the end of the sibling check
The dirattr btree checking code uses the altpath substructure of the
dirattr state structure to check the sibling pointers of dir/attr tree
blocks.  At the end of sibling checks, xfs_da3_path_shift could have
changed multiple levels of buffer pointers in the altpath structure.
Although we release the leaf level buffer, this isn't enough -- we also
need to release the node buffers that are unique to the altpath.

Not releasing all of the altpath buffers leaves them locked to the
transaction.  This is suboptimal because we should release resources
when we don't need them anymore.  Fix the function to loop all levels of
the altpath, and fix the return logic so that we always run the loop.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
2020-03-26 08:19:24 -07:00
..
agheader_repair.c xfs: replace open-coded bitmap weight logic 2020-03-18 08:12:23 -07:00
agheader.c xfs: remove XFS_BUF_TO_SBP 2020-03-11 09:11:39 -07:00
alloc.c xfs: convert btree cursor ag-private member name 2020-03-13 10:37:14 -07:00
attr.c xfs: mark extended attr corrupt when lookup-by-hash fails 2020-03-12 07:58:13 -07:00
attr.h xfs: only allocate memory for scrubbing attributes when we need it 2019-07-05 10:29:56 -07:00
bitmap.c xfs: replace open-coded bitmap weight logic 2020-03-18 08:12:23 -07:00
bitmap.h xfs: replace open-coded bitmap weight logic 2020-03-18 08:12:23 -07:00
bmap.c xfs: convert btree cursor inode-private member names 2020-03-13 10:37:14 -07:00
btree.c xfs: remove unused header files 2019-06-28 19:30:43 -07:00
btree.h xfs: const-ify xfs_owner_info arguments 2018-12-12 08:47:16 -08:00
common.c xfs: remove unused header files 2019-06-28 19:30:43 -07:00
common.h xfs: periodically yield scrub threads to the scheduler 2019-11-07 13:00:53 -08:00
dabtree.c xfs: drop all altpath buffers at the end of the sibling check 2020-03-26 08:19:24 -07:00
dabtree.h xfs: refactor btree node scrubbing 2019-11-10 16:54:19 -08:00
dir.c xfs: mark dir corrupt when lookup-by-hash fails 2020-03-12 07:58:13 -07:00
fscounters.c xfs: remove unnecessary null pointer checks from _read_agf callers 2020-01-26 14:32:27 -08:00
health.c xfs: fix missing header includes 2019-11-07 13:00:53 -08:00
health.h xfs: scrub should only cross-reference with healthy btrees 2019-04-16 10:01:57 -07:00
ialloc.c xfs: convert btree cursor ag-private member name 2020-03-13 10:37:14 -07:00
inode.c xfs: remove unused header files 2019-06-28 19:30:43 -07:00
parent.c xfs: allow parent directory scans to be interrupted with fatal signals 2019-11-27 08:23:14 -08:00
quota.c xfs: add missing early termination checks to record scrubbing functions 2019-11-06 08:07:41 -08:00
refcount.c xfs: convert btree cursor ag-private member name 2020-03-13 10:37:14 -07:00
repair.c xfs: rename xfs_bitmap to xbitmap 2020-03-18 08:12:23 -07:00
repair.h xfs: rename xfs_bitmap to xbitmap 2020-03-18 08:12:23 -07:00
rmap.c xfs: convert btree cursor ag-private member name 2020-03-13 10:37:14 -07:00
rtbitmap.c xfs: remove unused header files 2019-06-28 19:30:43 -07:00
scrub.c xfs: fix missing header includes 2019-11-07 13:00:53 -08:00
scrub.h xfs: add online scrub for superblock counters 2019-04-30 08:19:13 -07:00
symlink.c fs: xfs: Remove KM_NOSLEEP and KM_SLEEP. 2019-08-26 12:06:22 -07:00
trace.c xfs: convert btree cursor inode-private member names 2020-03-13 10:37:14 -07:00
trace.h xfs: convert btree cursor inode-private member names 2020-03-13 10:37:14 -07:00
xfs_scrub.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00