OpenCloudOS-Kernel/fs/xfs/libxfs
Dave Chinner e35438196c xfs: bmapbt checking on debug kernels too expensive
For large sparse or fragmented files, checking every single entry in
the bmapbt on every operation is prohibitively expensive. Especially
as such checks rarely discover problems during normal operations on
high extent coutn files. Our regression tests don't tend to exercise
files with hundreds of thousands to millions of extents, so mostly
this isn't noticed.

However, trying to run things like xfs_mdrestore of large filesystem
dumps on a debug kernel quickly becomes impossible as the CPU is
completely burnt up repeatedly walking the sparse file bmapbt that
is generated for every allocation that is made.

Hence, if the file has more than 10,000 extents, just don't bother
with walking the tree to check it exhaustively. The btree code has
checks that ensure that the newly inserted/removed/modified record
is correctly ordered, so the entrie tree walk in thses cases has
limited additional value.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2016-01-08 11:28:49 +11:00
..
xfs_alloc.c libxfs: make xfs_alloc_fix_freelist non-static 2016-01-04 16:10:42 +11:00
xfs_alloc.h libxfs: make xfs_alloc_fix_freelist non-static 2016-01-04 16:10:42 +11:00
xfs_alloc_btree.c libxfs: refactor short btree block verification 2016-01-04 16:13:21 +11:00
xfs_alloc_btree.h
xfs_attr.c xfs: per-filesystem stats counter implementation 2015-10-12 18:21:22 +11:00
xfs_attr_leaf.c xfs: print name of verifier if it fails 2016-01-04 16:10:19 +11:00
xfs_attr_leaf.h xfs: xfs_attr_inactive leaves inconsistent attr fork state behind 2015-05-29 07:40:08 +10:00
xfs_attr_remote.c xfs: print name of verifier if it fails 2016-01-04 16:10:19 +11:00
xfs_attr_remote.h
xfs_attr_sf.h
xfs_bit.c libxfs: Optimize the loop for xfs_bitmap_empty 2016-01-04 16:10:19 +11:00
xfs_bit.h
xfs_bmap.c xfs: bmapbt checking on debug kernels too expensive 2016-01-08 11:28:49 +11:00
xfs_bmap.h xfs: introduce BMAPI_ZERO for allocating zeroed extents 2015-11-03 12:27:22 +11:00
xfs_bmap_btree.c xfs: print name of verifier if it fails 2016-01-04 16:10:19 +11:00
xfs_bmap_btree.h
xfs_btree.c libxfs: refactor short btree block verification 2016-01-04 16:13:21 +11:00
xfs_btree.h libxfs: refactor short btree block verification 2016-01-04 16:13:21 +11:00
xfs_cksum.h
xfs_da_btree.c xfs: print name of verifier if it fails 2016-01-04 16:10:19 +11:00
xfs_da_btree.h
xfs_da_format.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_da_format.h xfs: Fix xfs_attr_leafblock definition 2015-08-19 10:34:32 +10:00
xfs_dir2.c xfs: per-filesystem stats counter implementation 2015-10-12 18:21:22 +11:00
xfs_dir2.h xfs: move type conversion functions to xfs_dir.h 2014-12-04 09:43:17 +11:00
xfs_dir2_block.c xfs: print name of verifier if it fails 2016-01-04 16:10:19 +11:00
xfs_dir2_data.c xfs: print name of verifier if it fails 2016-01-04 16:10:19 +11:00
xfs_dir2_leaf.c xfs: print name of verifier if it fails 2016-01-04 16:10:19 +11:00
xfs_dir2_node.c xfs: print name of verifier if it fails 2016-01-04 16:10:19 +11:00
xfs_dir2_priv.h xfs: move type conversion functions to xfs_dir.h 2014-12-04 09:43:17 +11:00
xfs_dir2_sf.c Merge branch 'xfs-misc-fixes-for-3.19-2' into for-next 2014-12-04 09:46:17 +11:00
xfs_dquot_buf.c xfs: print name of verifier if it fails 2016-01-04 16:10:19 +11:00
xfs_format.h libxfs: pack the agfl header structure so XFS_AGFL_SIZE is correct 2016-01-04 16:13:21 +11:00
xfs_fs.h xfs: prefix XATTR_LIST_MAX with XFS_ 2015-10-12 16:02:56 +11:00
xfs_ialloc.c xfs: print name of verifier if it fails 2016-01-04 16:10:19 +11:00
xfs_ialloc.h Merge branch 'xfs-misc-fixes-for-4.2-3' into for-next 2015-06-23 08:49:01 +10:00
xfs_ialloc_btree.c libxfs: refactor short btree block verification 2016-01-04 16:13:21 +11:00
xfs_ialloc_btree.h xfs: allocate sparse inode chunks on full chunk allocation failure 2015-05-29 09:18:32 +10:00
xfs_inode_buf.c xfs: print name of verifier if it fails 2016-01-04 16:10:19 +11:00
xfs_inode_buf.h
xfs_inode_fork.c xfs: merge xfs_inum.h into xfs_format.h 2014-11-28 14:27:10 +11:00
xfs_inode_fork.h
xfs_log_format.h xfs: merge xfs_dinode.h into xfs_format.h 2014-11-28 14:24:06 +11:00
xfs_log_recover.h
xfs_log_rlimit.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_quota_defs.h
xfs_rtbitmap.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_sb.c xfs: print name of verifier if it fails 2016-01-04 16:10:19 +11:00
xfs_sb.h xfs: consolidate superblock logging functions 2015-01-22 09:10:31 +11:00
xfs_shared.h xfs: saner xfs_trans_commit interface 2015-06-04 13:48:08 +10:00
xfs_symlink_remote.c xfs: print name of verifier if it fails 2016-01-04 16:10:19 +11:00
xfs_trans_resv.c xfs: consolidate superblock logging functions 2015-01-22 09:10:31 +11:00
xfs_trans_resv.h xfs: clean up XFS_MIN_FREELIST macros 2015-06-22 10:13:30 +10:00
xfs_trans_space.h xfs: clean up XFS_MIN_FREELIST macros 2015-06-22 10:13:30 +10:00
xfs_types.h xfs: move xfs_types.h to libxfs 2015-01-09 10:46:31 +11:00