linux_dsm_epyc7002/fs/btrfs
Liu Bo 625f1c8dc6 Btrfs: improve the loop of scrub_stripe
1) Right now scrub_stripe() is looping in some unnecessary cases:
* when the found extent item's objectid has been out of the dev extent's range
  but we haven't finish scanning all the range within the dev extent
* when all the items has been processed but we haven't finish scanning all the
  range within the dev extent

In both cases, we can just finish the loop to save costs.

2) Besides, when the found extent item's length is larger than the stripe
len(64k), we don't have to release the path and search again as it'll get at the
same key used in the last loop, we can instead increase the logical cursor in
place till all space of the extent is scanned.

3) And we use 0 as the key's offset to search btree, then get to previous item
to find a smaller item, and again have to move to the next one to get the right
item.  Setting offset=-1 and previous_item() is the correct way.

4) As we won't find any checksum at offset unless this 'offset' is in a data
extent, we can just find checksum when we're really going to scrub an extent.

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
2013-05-06 15:55:26 -04:00
..
acl.c
async-thread.c
async-thread.h
backref.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
backref.h btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
btrfs_inode.h btrfs: fix minor typo in comment 2013-05-06 15:54:49 -04:00
check-integrity.c
check-integrity.h
compat.h
compression.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
compression.h btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
ctree.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
ctree.h btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
delayed-inode.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
delayed-inode.h
delayed-ref.c Btrfs: separate sequence numbers for delayed ref tracking and tree mod log 2013-05-06 15:55:17 -04:00
delayed-ref.h
dev-replace.c
dev-replace.h
dir-item.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
disk-io.c btrfs: remove unused gfp mask parameter from release_extent_buffer callchain 2013-05-06 15:55:24 -04:00
disk-io.h btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
export.c
export.h
extent_io.c btrfs: remove unused gfp mask parameter from release_extent_buffer callchain 2013-05-06 15:55:24 -04:00
extent_io.h btrfs: remove unused gfp mask parameter from release_extent_buffer callchain 2013-05-06 15:55:24 -04:00
extent_map.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
extent_map.h Btrfs: fix bad extent logging 2013-05-06 15:54:34 -04:00
extent-tree.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
file-item.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
file.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
free-space-cache.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
free-space-cache.h Btrfs: add some free space cache tests 2013-05-06 15:52:54 -04:00
hash.h
inode-item.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
inode-map.c
inode-map.h
inode.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
ioctl.c btrfs: read entire device info under lock 2013-05-06 15:55:25 -04:00
Kconfig btrfs: move leak debug code to functions 2013-05-06 15:55:16 -04:00
locking.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
locking.h
lzo.c
Makefile
math.h
ordered-data.c Btrfs: improve the performance of the csums lookup 2013-05-06 15:54:35 -04:00
ordered-data.h Btrfs: improve the performance of the csums lookup 2013-05-06 15:54:35 -04:00
orphan.c
print-tree.c Btrfs: Include the device in most error printk()s 2013-05-06 15:54:23 -04:00
print-tree.h btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
qgroup.c Btrfs: automatic rescan after "quota enable" command 2013-05-06 15:55:20 -04:00
raid56.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
raid56.h
rcu-string.h
reada.c Btrfs: fix reada debug code compilation 2013-05-06 15:54:55 -04:00
relocation.c btrfs: handle errors returned from get_tree_block_key 2013-05-06 15:55:24 -04:00
root-tree.c Btrfs: delete unused parameter to btrfs_read_root_item() 2013-05-06 15:55:14 -04:00
scrub.c Btrfs: improve the loop of scrub_stripe 2013-05-06 15:55:26 -04:00
send.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
send.h btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
struct-funcs.c
super.c Btrfs: fix lockdep warning 2013-05-06 15:55:00 -04:00
sysfs.c
transaction.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
transaction.h btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
tree-defrag.c
tree-log.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
tree-log.h btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
ulist.c Btrfs: add a rb_tree to improve performance of ulist search 2013-05-06 15:54:44 -04:00
ulist.h Btrfs: add a rb_tree to improve performance of ulist search 2013-05-06 15:54:44 -04:00
version.h
volumes.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
volumes.h btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
xattr.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
xattr.h
zlib.c