linux/fs/xfs/scrub
Darrick J. Wong 036f463fe1 xfs: online scrub needn't bother zeroing its temporary buffer
The xattr scrubber functions use the temporary memory buffer either for
storing bitmaps or for testing if attribute value extraction works.  The
bitmap code always zeroes what it needs and the value extraction sets
the buffer contents, so it's not necessary to waste CPU time zeroing on
allocation.

Note that while we never read the contents that the attr value
extraction function sets, we do need to call it to check the remote
attribute header and CRCs to check for corruption.

A flame graph analysis showed that we were spending 7% of a xfs_scrub
run (the whole program, not just the attr scrubber itself) allocating
and zeroing 64k segments needlessly.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
2019-07-05 10:29:56 -07:00
..
agheader_repair.c xfs: remove unused header files 2019-06-28 19:30:43 -07:00
agheader.c xfs: create iterator error codes 2019-07-02 09:40:05 -07:00
alloc.c xfs: remove unused header files 2019-06-28 19:30:43 -07:00
attr.c xfs: online scrub needn't bother zeroing its temporary buffer 2019-07-05 10:29:56 -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: remove unused header files 2019-06-28 19:30:43 -07:00
bitmap.h xfs: repair the AGFL 2018-08-10 11:44:31 -07:00
bmap.c xfs: remove unused header files 2019-06-28 19:30:43 -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: add online scrub for superblock counters 2019-04-30 08:19:13 -07:00
dabtree.c xfs: remove unused header files 2019-06-28 19:30:43 -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: remove unused header files 2019-06-28 19:30:43 -07:00
fscounters.c xfs: remove unused header files 2019-06-28 19:30:43 -07:00
health.c xfs: remove unused header files 2019-06-28 19:30:43 -07: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 header files 2019-06-28 19:30:43 -07:00
inode.c xfs: remove unused header files 2019-06-28 19:30:43 -07:00
parent.c xfs: remove unused header files 2019-06-28 19:30:43 -07:00
quota.c xfs: remove unused header files 2019-06-28 19:30:43 -07:00
refcount.c xfs: remove unused header files 2019-06-28 19:30:43 -07:00
repair.c xfs: create iterator error codes 2019-07-02 09:40:05 -07:00
repair.h xfs: hoist the already_fixed variable to the scrub context 2019-04-16 10:01:57 -07:00
rmap.c xfs: remove unused header files 2019-06-28 19:30:43 -07:00
rtbitmap.c xfs: remove unused header files 2019-06-28 19:30:43 -07:00
scrub.c xfs: remove unused header files 2019-06-28 19:30:43 -07:00
scrub.h xfs: add online scrub for superblock counters 2019-04-30 08:19:13 -07:00
symlink.c xfs: remove unused header files 2019-06-28 19:30:43 -07:00
trace.c xfs: remove unused header files 2019-06-28 19:30:43 -07:00
trace.h xfs: add online scrub for superblock counters 2019-04-30 08:19:13 -07:00
xfs_scrub.h xfs: convert to SPDX license tags 2018-06-06 14:17:53 -07:00