OpenCloudOS-Kernel/fs/xfs/scrub
Darrick J. Wong 38b6238eb6 xfs: fix buffer state management in xrep_findroot_block
We don't handle buffer state properly in online repair's findroot
routine.  If a buffer already has b_ops set, we don't ever want to touch
that, and we don't want to call the read verifiers on a buffer that
could be dirty (CRCs are only recomputed during log checkpoints).

Therefore, be more careful about what we do with a buffer -- if someone
else already attached ops that are not the ones for this btree type,
just ignore the buffer.  We only attach our btree type's buf ops if it
matches the magic/uuid and structure checks.

We also modify xfs_buf_read_map to allow callers to set buffer ops on a
DONE buffer with NULL ops so that repair doesn't leave behind buffers
which won't have buffers attached to them.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2018-10-18 17:20:35 +11:00
..
agheader.c xfs: fix indentation and other whitespace problems in scrub/repair 2018-07-23 09:08:01 -07:00
agheader_repair.c xfs: repair the AGI 2018-08-10 11:44:31 -07:00
alloc.c xfs: remove duplicated include from alloc.c 2018-09-29 13:48:21 +10:00
attr.c xfs: fix indentation and other whitespace problems in scrub/repair 2018-07-23 09:08:01 -07:00
bitmap.c xfs: repair the AGFL 2018-08-10 11:44:31 -07:00
bitmap.h xfs: repair the AGFL 2018-08-10 11:44:31 -07:00
bmap.c xfs: fix indentation and other whitespace problems in scrub/repair 2018-07-23 09:08:01 -07:00
btree.c xfs: fix indentation and other whitespace problems in scrub/repair 2018-07-23 09:08:01 -07:00
btree.h xfs: fix indentation and other whitespace problems in scrub/repair 2018-07-23 09:08:01 -07:00
common.c xfs: clean up IRELE/iput callsites 2018-07-26 10:15:16 -07:00
common.h xfs: fix indentation and other whitespace problems in scrub/repair 2018-07-23 09:08:01 -07:00
dabtree.c xfs: fix indentation and other whitespace problems in scrub/repair 2018-07-23 09:08:01 -07:00
dabtree.h xfs: fix indentation and other whitespace problems in scrub/repair 2018-07-23 09:08:01 -07:00
dir.c xfs: clean up IRELE/iput callsites 2018-07-26 10:15:16 -07:00
ialloc.c xfs: fix indentation and other whitespace problems in scrub/repair 2018-07-23 09:08:01 -07:00
inode.c xfs: don't treat unknown di_flags2 as corruption in scrub 2018-09-29 13:49:00 +10:00
parent.c xfs: clean up IRELE/iput callsites 2018-07-26 10:15:16 -07:00
quota.c xfs: fix indentation and other whitespace problems in scrub/repair 2018-07-23 09:08:01 -07:00
refcount.c xfs: fix indentation and other whitespace problems in scrub/repair 2018-07-23 09:08:01 -07:00
repair.c xfs: fix buffer state management in xrep_findroot_block 2018-10-18 17:20:35 +11:00
repair.h xfs: repair the AGI 2018-08-10 11:44:31 -07:00
rmap.c xfs: fix indentation and other whitespace problems in scrub/repair 2018-07-23 09:08:01 -07:00
rtbitmap.c xfs: fix indentation and other whitespace problems in scrub/repair 2018-07-23 09:08:01 -07:00
scrub.c xfs: remove suport for filesystems without unwritten extent flag 2018-10-18 17:18:58 +11:00
scrub.h xfs: fix indentation and other whitespace problems in scrub/repair 2018-07-23 09:08:01 -07:00
symlink.c xfs: fix indentation and other whitespace problems in scrub/repair 2018-07-23 09:08:01 -07:00
trace.c xfs: fix indentation and other whitespace problems in scrub/repair 2018-07-23 09:08:01 -07:00
trace.h xfs: refactor the xrep_extent_list into xfs_bitmap 2018-07-31 13:18:08 -07:00
xfs_scrub.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00