linux/fs/btrfs
Qu Wenruo 8e7e9c672f btrfs: subpage: make reader lock utilize bitmap
Currently btrfs_subpage utilizes its atomic member @reader to manage the
reader counter.  However it is only utilized to prevent the page to be
released/unlocked when we still have reads underway.

In that use case, we don't really allow multiple readers on the same
subpage sector.  So here we can introduce a new locked bitmap to
represent exactly which subpage range is locked for read.

In theory we can remove btrfs_subpage::reader as it's just the set bits
of the new locked bitmap.  But unfortunately bitmap doesn't provide such
handy API yet, so we still keep the reader counter.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2024-03-05 17:13:23 +01:00
..
tests btrfs: tests: allocate dummy fs_info and root in test_find_delalloc() 2024-03-04 16:24:49 +01:00
accessors.c btrfs: remove unused included headers 2024-03-04 16:24:46 +01:00
accessors.h btrfs: move balance args conversion helpers to volumes.c 2024-03-04 16:24:52 +01:00
acl.c btrfs: remove unused included headers 2024-03-04 16:24:46 +01:00
acl.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
async-thread.c btrfs: remove unused included headers 2024-03-04 16:24:46 +01:00
async-thread.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
backref.c btrfs: uninline some static inline helpers from backref.h 2024-03-04 16:24:53 +01:00
backref.h btrfs: uninline some static inline helpers from backref.h 2024-03-04 16:24:53 +01:00
bio.c btrfs: introduce offload_csum_mode to tweak checksum offloading behavior 2024-03-04 16:24:52 +01:00
bio.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
block-group.c btrfs: handle block group lookup error when it's being removed 2024-03-04 16:24:47 +01:00
block-group.h btrfs: add forward declarations and headers, part 3 2024-03-04 16:24:49 +01:00
block-rsv.c btrfs: remove unused included headers 2024-03-04 16:24:46 +01:00
block-rsv.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
btrfs_inode.h btrfs: merge btrfs_del_delalloc_inode() helpers 2024-03-04 16:24:54 +01:00
compression.c btrfs: add helper to get fs_info from struct inode pointer 2024-03-04 16:24:49 +01:00
compression.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
ctree.c btrfs: use KMEM_CACHE() to create btrfs_path cache 2024-03-04 16:24:53 +01:00
ctree.h btrfs: add forward declarations and headers, part 3 2024-03-04 16:24:49 +01:00
defrag.c btrfs: add helper to get fs_info from struct inode pointer 2024-03-04 16:24:49 +01:00
defrag.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
delalloc-space.c btrfs: remove unused included headers 2024-03-04 16:24:46 +01:00
delalloc-space.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
delayed-inode.c btrfs: use KMEM_CACHE() to create btrfs_delayed_node cache 2024-03-04 16:24:53 +01:00
delayed-inode.h btrfs: uninline btrfs_init_delayed_root() 2024-03-04 16:24:53 +01:00
delayed-ref.c btrfs: use KMEM_CACHE() to create delayed ref caches 2024-03-04 16:24:53 +01:00
delayed-ref.h btrfs: uninline some static inline helpers from delayed-ref.h 2024-03-04 16:24:53 +01:00
dev-replace.c btrfs: pass btrfs_device to btrfs_scratch_superblocks() 2024-03-04 16:24:54 +01:00
dev-replace.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
dir-item.c btrfs: abort transaction on generation mismatch when marking eb as dirty 2023-10-12 16:44:07 +02:00
dir-item.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
discard.c btrfs: unexport btrfs_run_discard_work and make it static 2023-06-19 13:59:25 +02:00
discard.h btrfs: unexport btrfs_run_discard_work and make it static 2023-06-19 13:59:25 +02:00
disk-io.c btrfs: merge btrfs_del_delalloc_inode() helpers 2024-03-04 16:24:54 +01:00
disk-io.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
export.c btrfs: add helper to get fs_info from struct inode pointer 2024-03-04 16:24:49 +01:00
export.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
extent_io.c btrfs: pass a valid extent map cache pointer to __get_extent_map() 2024-03-05 17:13:23 +01:00
extent_io.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
extent_map.c btrfs: handle invalid range and start in merge_extent_mapping() 2024-03-04 16:24:47 +01:00
extent_map.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
extent-io-tree.c btrfs: remove unused included headers 2024-03-04 16:24:46 +01:00
extent-io-tree.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
extent-tree.c btrfs: avoid unnecessary ref initialization when freeing log tree block 2024-03-04 16:24:52 +01:00
extent-tree.h btrfs: add forward declarations and headers, part 3 2024-03-04 16:24:49 +01:00
file-item.c btrfs: unify handling of return values of btrfs_insert_empty_items() 2024-03-04 16:24:48 +01:00
file-item.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
file.c btrfs: add helper to get fs_info from struct inode pointer 2024-03-04 16:24:49 +01:00
file.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
free-space-cache.c btrfs: use KMEM_CACHE() to create btrfs_free_space cache 2024-03-04 16:24:54 +01:00
free-space-cache.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
free-space-tree.c btrfs: move transaction abort to the error site btrfs_rebuild_free_space_tree() 2024-03-04 16:24:48 +01:00
free-space-tree.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
fs.c btrfs: sysfs: update fs features directory asynchronously 2023-02-13 17:50:35 +01:00
fs.h btrfs: factor out validation of btrfs_ioctl_vol_args::name 2024-03-04 16:24:52 +01:00
inode-item.c btrfs: remove unused included headers 2024-03-04 16:24:46 +01:00
inode-item.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
inode.c btrfs: merge btrfs_del_delalloc_inode() helpers 2024-03-04 16:24:54 +01:00
ioctl.c btrfs: factor out validation of btrfs_ioctl_vol_args_v2::name 2024-03-04 16:24:52 +01:00
ioctl.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
Kconfig btrfs: check-integrity: remove CONFIG_BTRFS_FS_CHECK_INTEGRITY option 2023-10-12 16:44:05 +02:00
locking.c btrfs: change BUG_ON to assertion when verifying lockdep class setup 2024-03-04 16:24:48 +01:00
locking.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
lru_cache.c btrfs: fix typos found by codespell 2023-12-15 23:00:04 +01:00
lru_cache.h btrfs: open code trivial btrfs_lru_cache_size() 2024-03-04 16:24:53 +01:00
lzo.c btrfs: add helper to get fs_info from struct inode pointer 2024-03-04 16:24:49 +01:00
Makefile btrfs: add support for inserting raid stripe extents 2023-10-12 16:44:09 +02:00
messages.c btrfs: remove unused included headers 2024-03-04 16:24:46 +01:00
messages.h btrfs: constify fs_info parameter in __btrfs_panic() 2023-12-15 20:27:02 +01:00
misc.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
ordered-data.c btrfs: use KMEM_CACHE() to create btrfs_ordered_extent cache 2024-03-04 16:24:53 +01:00
ordered-data.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
orphan.c btrfs: remove unused included headers 2024-03-04 16:24:46 +01:00
orphan.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
print-tree.c btrfs: new inline ref storing owning subvol of data extents 2023-10-12 16:44:11 +02:00
print-tree.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
props.c btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
props.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
qgroup.c btrfs: handle transaction commit errors in flush_reservations() 2024-03-04 16:24:54 +01:00
qgroup.h btrfs: add forward declarations and headers, part 3 2024-03-04 16:24:49 +01:00
raid56.c btrfs: raid56: extra debugging for raid6 syndrome generation 2024-03-04 16:24:52 +01:00
raid56.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
raid-stripe-tree.c btrfs: remove unused included headers 2024-03-04 16:24:46 +01:00
raid-stripe-tree.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
rcu-string.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
ref-verify.c btrfs: ref-verify: free ref cache before clearing mount opt 2024-01-12 01:59:49 +01:00
ref-verify.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
reflink.c btrfs: add helper to get fs_info from struct inode pointer 2024-03-04 16:24:49 +01:00
reflink.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
relocation.c btrfs: open code btrfs_backref_iter_free() 2024-03-04 16:24:52 +01:00
relocation.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
root-tree.c btrfs: handle invalid root reference found in btrfs_find_root() 2024-03-04 16:24:47 +01:00
root-tree.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
scrub.c btrfs: handle invalid extent item reference found in find_first_extent_item() 2024-03-04 16:24:51 +01:00
scrub.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
send.c btrfs: open code trivial btrfs_lru_cache_size() 2024-03-04 16:24:53 +01:00
send.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
space-info.c btrfs: remove unused included headers 2024-03-04 16:24:46 +01:00
space-info.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
subpage.c btrfs: subpage: make reader lock utilize bitmap 2024-03-05 17:13:23 +01:00
subpage.h btrfs: subpage: make reader lock utilize bitmap 2024-03-05 17:13:23 +01:00
super.c btrfs: factor out validation of btrfs_ioctl_vol_args::name 2024-03-04 16:24:52 +01:00
super.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
sysfs.c btrfs: introduce offload_csum_mode to tweak checksum offloading behavior 2024-03-04 16:24:52 +01:00
sysfs.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
transaction.c btrfs: use KMEM_CACHE() to create btrfs_trans_handle cache 2024-03-04 16:24:53 +01:00
transaction.h btrfs: remove no longer used btrfs_transaction_in_commit() 2024-03-04 16:24:52 +01:00
tree-checker.c btrfs: remove unused included headers 2024-03-04 16:24:46 +01:00
tree-checker.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
tree-log.c btrfs: uninline some static inline helpers from tree-log.h 2024-03-04 16:24:53 +01:00
tree-log.h btrfs: uninline some static inline helpers from tree-log.h 2024-03-04 16:24:53 +01:00
tree-mod-log.c btrfs: drop static inline specifiers from tree-mod-log.c 2024-03-04 16:24:53 +01:00
tree-mod-log.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
ulist.c btrfs: remove unused included headers 2024-03-04 16:24:46 +01:00
ulist.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
uuid-tree.c btrfs: unify handling of return values of btrfs_insert_empty_items() 2024-03-04 16:24:48 +01:00
uuid-tree.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
verity.c btrfs: remove unused included headers 2024-03-04 16:24:46 +01:00
verity.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
volumes.c btrfs: pass btrfs_device to btrfs_scratch_superblocks() 2024-03-04 16:24:54 +01:00
volumes.h btrfs: pass btrfs_device to btrfs_scratch_superblocks() 2024-03-04 16:24:54 +01:00
xattr.c btrfs: cache that we don't have security.capability set 2023-12-15 20:27:05 +01:00
xattr.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
zlib.c btrfs: zlib: Fix spelling mistake "infalte" -> "inflate" 2024-03-04 16:24:46 +01:00
zoned.c btrfs: remove unused included headers 2024-03-04 16:24:46 +01:00
zoned.h btrfs: add forward declarations and headers, part 2 2024-03-04 16:24:49 +01:00
zstd.c btrfs: zstd: fix and simplify the inline extent decompression (v2) 2024-03-04 16:24:46 +01:00