linux/fs/xfs/scrub
Darrick J. Wong 54e9b09e15 xfs: fix brainos in the refcount scrubber's rmap fragment processor
Fix some serious WTF in the reference count scrubber's rmap fragment
processing.  The code comment says that this loop is supposed to move
all fragment records starting at or before bno onto the worklist, but
there's no obvious reason why nr (the number of items added) should
increment starting from 1, and breaking the loop when we've added the
target number seems dubious since we could have more rmap fragments that
should have been added to the worklist.

This seems to manifest in xfs/411 when adding one to the refcount field.

Fixes: dbde19da96 ("xfs: cross-reference the rmapbt data with the refcountbt")
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
2020-11-10 16:48:03 -08:00
..
agheader.c xfs: support inode btree blockcounts in online scrub 2020-09-15 20:52:40 -07:00
agheader_repair.c xfs: support inode btree blockcounts in online repair 2020-09-15 20:52:40 -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: set the unwritten bit in rmap lookup flags in xchk_bmap_get_rmapextents 2020-11-10 16:47:51 -08: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: check dabtree node hash values when loading child blocks 2020-09-23 08:58:51 -07:00
dabtree.h xfs: refactor btree node scrubbing 2019-11-10 16:54:19 -08:00
dir.c xfs: move the fork format fields into struct xfs_ifork 2020-05-19 09:40:58 -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: remove unused iget_flags param from xfs_imap_to_bp() 2020-05-07 08:27:49 -07:00
inode.c xfs: fix scrub flagging rtinherit even if there is no rt device 2020-11-04 08:52:47 -08:00
parent.c xfs: move the per-fork nextents fields into struct xfs_ifork 2020-05-19 09:40:58 -07:00
quota.c xfs: create xfs_dqtype_t to represent quota types 2020-07-28 20:24:14 -07:00
refcount.c xfs: fix brainos in the refcount scrubber's rmap fragment processor 2020-11-10 16:48:03 -08:00
repair.c xfs: create xfs_dqtype_t to represent quota types 2020-07-28 20:24:14 -07:00
repair.h xfs: create xfs_dqtype_t to represent quota types 2020-07-28 20:24:14 -07:00
rmap.c xfs: convert btree cursor ag-private member name 2020-03-13 10:37:14 -07:00
rtbitmap.c xfs: rtbitmap scrubber should check inode size 2020-07-07 07:15:09 -07:00
scrub.c xfs: prohibit fs freezing when using empty transactions 2020-03-26 08:19:24 -07:00
scrub.h xfs: add online scrub for superblock counters 2019-04-30 08:19:13 -07:00
symlink.c xfs: Remove kmem_zalloc_large() 2020-09-15 20:52:41 -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