linux/fs/btrfs
Filipe Manana 013f9c70d2 btrfs: skip unnecessary extent map searches during fiemap and lseek
If we have no outstanding extents it means we don't have any extent maps
corresponding to delalloc that is flushing, as when an ordered extent is
created we increment the number of outstanding extents to 1 and when we
remove the ordered extent we decrement them by 1. So skip extent map tree
searches if the number of outstanding ordered extents is 0, saving time as
the tree is not empty if we have previously made some reads or flushed
delalloc, as in those cases it can have a very large number of extent maps
for files with many extents.

This helps save time when processing a file range corresponding to a hole
or prealloc (unwritten) extent.

The next patch in the series has a performance test in its changelog and
its subject is:

    "btrfs: skip unnecessary delalloc search during fiemap and lseek"

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2022-12-05 18:00:38 +01:00
..
tests for-6.1-rc4-tag 2022-11-10 08:58:29 -08:00
acl.c
async-thread.c
async-thread.h
backref.c btrfs: fix inode list leak during backref walking at find_parent_nodes() 2022-11-02 17:43:28 +01:00
backref.h btrfs: ignore fiemap path cache if we have multiple leaves for a data extent 2022-10-11 14:48:07 +02:00
block-group.c btrfs: move btrfs_should_fragment_free_space into block-group.c 2022-12-05 18:00:37 +01:00
block-group.h btrfs: move btrfs_should_fragment_free_space into block-group.c 2022-12-05 18:00:37 +01:00
block-rsv.c btrfs: introduce BTRFS_RESERVE_FLUSH_EMERGENCY 2022-12-05 18:00:38 +01:00
block-rsv.h btrfs: add KCSAN annotations for unlocked access to block_rsv->full 2022-09-26 12:28:02 +02:00
btrfs_inode.h btrfs: move btrfs_print_data_csum_error into inode.c 2022-12-05 18:00:37 +01:00
check-integrity.c
check-integrity.h
compression.c fs: fix leaked psi pressure state 2022-11-08 15:57:25 -08:00
compression.h
ctree.c btrfs: move btrfs_next_old_item into ctree.c 2022-12-05 18:00:37 +01:00
ctree.h btrfs: move the btrfs_verity_descriptor_item defs up in ctree.h 2022-12-05 18:00:37 +01:00
delalloc-space.c btrfs: add the ability to use NO_FLUSH for data reservations 2022-09-29 17:08:28 +02:00
delalloc-space.h btrfs: add the ability to use NO_FLUSH for data reservations 2022-09-29 17:08:28 +02:00
delayed-inode.c btrfs: move flush related definitions to space-info.h 2022-12-05 18:00:37 +01:00
delayed-inode.h btrfs: use delayed items when logging a directory 2022-09-26 12:27:57 +02:00
delayed-ref.c
delayed-ref.h
dev-replace.c btrfs: don't take a bio_counter reference for cloned bios 2022-09-26 12:27:58 +02:00
dev-replace.h btrfs: add struct declarations in dev-replace.h 2022-09-26 12:28:07 +02:00
dir-item.c
discard.c
discard.h
disk-io.c btrfs: move btrfs_get_block_group helper out of disk-io.h 2022-12-05 18:00:36 +01:00
disk-io.h btrfs: move btrfs_get_block_group helper out of disk-io.h 2022-12-05 18:00:36 +01:00
export.c btrfs: fix type of parameter generation in btrfs_get_dentry 2022-10-24 15:28:58 +02:00
export.h btrfs: fix type of parameter generation in btrfs_get_dentry 2022-10-24 15:28:58 +02:00
extent-io-tree.c btrfs: cache the failed state when locking extents 2022-12-05 18:00:36 +01:00
extent-io-tree.h btrfs: cache the failed state when locking extents 2022-12-05 18:00:36 +01:00
extent-tree.c btrfs: fix tree mod log mishandling of reallocated nodes 2022-10-24 15:28:07 +02:00
extent_io.c btrfs: add cached_state to read_extent_buffer_subpage 2022-12-05 18:00:36 +01:00
extent_io.h btrfs: move extent io tree unrelated prototypes to their appropriate header 2022-09-26 12:28:04 +02:00
extent_map.c btrfs: get the next extent map during fiemap/lseek more efficiently 2022-12-05 18:00:38 +01:00
extent_map.h btrfs: get the next extent map during fiemap/lseek more efficiently 2022-12-05 18:00:38 +01:00
file-item.c btrfs: make can_nocow_extent nowait compatible 2022-09-29 17:08:26 +02:00
file.c btrfs: skip unnecessary extent map searches during fiemap and lseek 2022-12-05 18:00:38 +01:00
free-space-cache.c btrfs: move free space cachep's out of ctree.h 2022-12-05 18:00:37 +01:00
free-space-cache.h btrfs: move free space cachep's out of ctree.h 2022-12-05 18:00:37 +01:00
free-space-tree.c btrfs: get rid of block group caching progress logic 2022-09-26 12:27:58 +02:00
free-space-tree.h
inode-item.c btrfs: move flush related definitions to space-info.h 2022-12-05 18:00:37 +01:00
inode-item.h
inode.c btrfs: move free space cachep's out of ctree.h 2022-12-05 18:00:37 +01:00
ioctl.c btrfs: free btrfs_path before copying subvol info to userspace 2022-11-15 17:15:45 +01:00
Kconfig
locking.c btrfs: implement a nowait option for tree searches 2022-09-26 12:46:42 +02:00
locking.h btrfs: implement a nowait option for tree searches 2022-09-26 12:46:42 +02:00
lzo.c
Makefile btrfs: move extent state init and alloc functions to their own file 2022-09-26 12:28:03 +02:00
misc.h btrfs: convert the io_failure_tree to a plain rb_tree 2022-09-26 12:28:02 +02:00
ordered-data.c btrfs: use cached_state for btrfs_check_nocow_lock 2022-12-05 18:00:36 +01:00
ordered-data.h btrfs: use cached_state for btrfs_check_nocow_lock 2022-12-05 18:00:36 +01:00
orphan.c
print-tree.c
print-tree.h
props.c btrfs: move flush related definitions to space-info.h 2022-12-05 18:00:37 +01:00
props.h
qgroup.c btrfs: qgroup: fix sleep from invalid context bug in btrfs_qgroup_inherit() 2022-11-21 14:57:52 +01:00
qgroup.h btrfs: introduce BTRFS_QGROUP_RUNTIME_FLAG_NO_ACCOUNTING to skip qgroup accounting 2022-09-26 12:28:01 +02:00
raid56.c btrfs: raid56: make it more explicit that cache rbio should have all its data sectors uptodate 2022-12-05 18:00:38 +01:00
raid56.h btrfs: properly abstract the parity raid bio handling 2022-09-26 12:27:59 +02:00
rcu-string.h
ref-verify.c
ref-verify.h
reflink.c btrfs: replace delete argument with EXTENT_CLEAR_ALL_BITS 2022-09-26 12:28:05 +02:00
reflink.h
relocation.c btrfs: move flush related definitions to space-info.h 2022-12-05 18:00:37 +01:00
root-tree.c btrfs: simplify error handling at btrfs_del_root_ref() 2022-09-26 12:27:58 +02:00
scrub.c btrfs: move BTRFS_MAX_MIRRORS into scrub.c 2022-12-05 18:00:37 +01:00
send.c btrfs: send: avoid unaligned encoded writes when attempting to clone range 2022-11-21 14:41:41 +01:00
send.h btrfs: send: allow protocol version 3 with CONFIG_BTRFS_DEBUG 2022-10-11 14:46:55 +02:00
space-info.c btrfs: introduce BTRFS_RESERVE_FLUSH_EMERGENCY 2022-12-05 18:00:38 +01:00
space-info.h btrfs: introduce BTRFS_RESERVE_FLUSH_EMERGENCY 2022-12-05 18:00:38 +01:00
struct-funcs.c
subpage.c
subpage.h
super.c btrfs: move free space cachep's out of ctree.h 2022-12-05 18:00:37 +01:00
sysfs.c btrfs: sysfs: normalize the error handling branch in btrfs_init_sysfs() 2022-11-23 16:52:22 +01:00
sysfs.h
transaction.c btrfs: move trans_handle_cachep out of ctree.h 2022-12-05 18:00:37 +01:00
transaction.h btrfs: move trans_handle_cachep out of ctree.h 2022-12-05 18:00:37 +01:00
tree-checker.c
tree-checker.h
tree-defrag.c
tree-log.c btrfs: do not modify log tree while holding a leaf from fs tree locked 2022-11-23 16:52:15 +01:00
tree-log.h btrfs: use delayed items when logging a directory 2022-09-26 12:27:57 +02:00
tree-mod-log.c
tree-mod-log.h
ulist.c
ulist.h
uuid-tree.c
verity.c
volumes.c btrfs: zoned: initialize device's zone info for seeding 2022-11-07 14:35:24 +01:00
volumes.h btrfs: zoned: initialize device's zone info for seeding 2022-11-07 14:35:24 +01:00
xattr.c
xattr.h
zlib.c
zoned.c btrfs: use kvcalloc in btrfs_get_dev_zone_info 2022-11-23 16:51:50 +01:00
zoned.h btrfs: zoned: clone zoned device info when cloning a device 2022-11-07 14:35:21 +01:00
zstd.c