linux-next/fs/btrfs
Filipe Manana 31dd35f120 btrfs: add assertions and comment about path expectations to btrfs_cross_ref_exist()
We should always call check_delayed_ref() with a path having a locked leaf
from the extent tree where either the extent item is located or where it
should be located in case it doesn't exist yet (when there's a pending
unflushed delayed ref to do it), as we need to lock any existing delayed
ref head while holding such leaf locked in order to avoid races with
flushing delayed references, which could make us think an extent is not
shared when it really is.

So add some assertions and a comment about such expectations to
btrfs_cross_ref_exist(), which is the only caller of check_delayed_ref().

Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2024-12-18 02:32:25 +01:00
..
tests btrfs: selftests: add delayed ref self test cases 2024-12-11 05:07:34 +01:00
accessors.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
accessors.h move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04: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: remove detached list from struct btrfs_backref_cache 2024-12-13 22:45:59 +01:00
backref.h btrfs: remove detached list from struct btrfs_backref_cache 2024-12-13 22:45:59 +01:00
bio.c btrfs: split bios to the fs sector size boundary 2024-12-11 05:07:35 +01:00
bio.h btrfs: fix error propagation of split bios 2024-10-23 18:17:43 +02:00
block-group.c btrfs: drop fs_info argument from btrfs_update_space_info_*() 2024-12-11 05:07:34 +01:00
block-group.h btrfs: constify more pointer parameters 2024-09-10 16:51:22 +02:00
block-rsv.c btrfs: drop fs_info argument from btrfs_update_space_info_*() 2024-12-11 05:07:34 +01:00
block-rsv.h btrfs: constify more pointer parameters 2024-09-10 16:51:22 +02:00
btrfs_inode.h btrfs: remove no longer needed strict argument from can_nocow_extent() 2024-12-18 02:32:23 +01:00
compression.c btrfs: use filemap_get_folio() helper 2024-11-11 14:34:19 +01:00
compression.h btrfs: lzo: drop unused paramter level from lzo_alloc_workspace() 2024-11-11 14:34:16 +01:00
ctree.c btrfs: fix use-after-free when COWing tree bock and tracing is enabled 2024-12-13 22:45:59 +01:00
ctree.h btrfs: fix improper generation check in snapshot delete 2024-12-11 05:07:34 +01:00
defrag.c btrfs: fix defrag not merging contiguous extents due to merged extent maps 2024-10-31 16:46:41 +01:00
defrag.h btrfs: drop transaction parameter from btrfs_add_inode_defrag() 2024-09-10 16:51:19 +02:00
delalloc-space.c btrfs: drop fs_info argument from btrfs_update_space_info_*() 2024-12-11 05:07:34 +01:00
delalloc-space.h btrfs: constify pointer parameters where applicable 2024-07-11 15:33:22 +02:00
delayed-inode.c btrfs: pass a btrfs_inode to btrfs_readdir_get_delayed_items() 2024-07-11 15:33:28 +02:00
delayed-inode.h btrfs: remove hole from struct btrfs_delayed_node 2024-11-11 14:34:22 +01:00
delayed-ref.c btrfs: drop fs_info argument from btrfs_update_space_info_*() 2024-12-11 05:07:34 +01:00
delayed-ref.h btrfs: move select_delayed_ref() and export it 2024-12-11 05:07:34 +01:00
dev-replace.c btrfs: correct typos in multiple comments across various files 2024-11-11 14:34:14 +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: drop unused parameter fs_info from btrfs_match_dir_item_name() 2024-11-11 14:34:17 +01:00
dir-item.h btrfs: drop unused parameter fs_info from btrfs_match_dir_item_name() 2024-11-11 14:34:17 +01:00
direct-io.c btrfs: remove no longer needed strict argument from can_nocow_extent() 2024-12-18 02:32:23 +01:00
direct-io.h btrfs: move the direct IO code into its own file 2024-07-11 15:33:29 +02:00
discard.c btrfs: constify more pointer parameters 2024-09-10 16:51:22 +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: flush delalloc workers queue before stopping cleaner kthread during unmount 2024-12-06 15:04:18 +01:00
disk-io.h btrfs: remove fs_info parameter from btrfs_cleanup_one_transaction() 2024-11-11 14:34:19 +01:00
export.c btrfs: remove super block argument from btrfs_iget() 2024-07-11 15:33:25 +02:00
export.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
extent_io.c btrfs: use PTR_ERR() instead of PTR_ERR_OR_ZERO() for btrfs_get_extent() 2024-12-11 05:07:34 +01:00
extent_io.h btrfs: convert try_release_extent_mapping() to take a folio 2024-09-10 16:51:21 +02:00
extent_map.c btrfs: rename extent map shrinker members from struct btrfs_fs_info 2024-11-11 14:34:17 +01:00
extent_map.h btrfs: make the extent map shrinker run asynchronously as a work queue job 2024-11-11 14:34:17 +01:00
extent-io-tree.c btrfs: introduce EXTENT_DIO_LOCKED 2024-09-10 16:51:20 +02:00
extent-io-tree.h btrfs: introduce EXTENT_DIO_LOCKED 2024-09-10 16:51:20 +02:00
extent-tree.c btrfs: add assertions and comment about path expectations to btrfs_cross_ref_exist() 2024-12-18 02:32:25 +01:00
extent-tree.h btrfs: simplify arguments for btrfs_cross_ref_exist() 2024-12-18 02:32:24 +01:00
fiemap.c btrfs: correct typos in multiple comments across various files 2024-11-11 14:34:14 +01:00
fiemap.h btrfs: move fiemap code into its own file 2024-07-11 15:33:20 +02:00
file-item.c btrfs: constify more pointer parameters 2024-09-10 16:51:22 +02:00
file-item.h btrfs: constify more pointer parameters 2024-09-10 16:51:22 +02:00
file.c btrfs: remove no longer needed strict argument from can_nocow_extent() 2024-12-18 02:32:23 +01:00
file.h btrfs: convert btrfs_buffered_write() to use folios 2024-11-11 14:34:19 +01:00
free-space-cache.c btrfs: convert btrfs_buffered_write() to use folios 2024-11-11 14:34:19 +01:00
free-space-cache.h btrfs: add cancellation points to trim loops 2024-10-07 23:21:56 +02:00
free-space-tree.c btrfs: do not BUG_ON() when freeing tree block after error 2024-07-11 15:33:26 +02: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: rename extent map shrinker members from struct btrfs_fs_info 2024-11-11 14:34:17 +01:00
inode-item.c btrfs: constify more pointer parameters 2024-09-10 16:51:22 +02:00
inode-item.h btrfs: constify more pointer parameters 2024-09-10 16:51:22 +02:00
inode.c btrfs: simplify arguments for btrfs_cross_ref_exist() 2024-12-18 02:32:24 +01:00
ioctl.c btrfs: handle FS_IOC_READ_VERITY_METADATA ioctl 2024-12-11 05:07:34 +01:00
ioctl.h btrfs: add io_uring command for encoded reads (ENCODED_READ ioctl) 2024-11-11 14:34:21 +01:00
Kconfig btrfs: split out CONFIG_BTRFS_EXPERIMENTAL from CONFIG_BTRFS_DEBUG 2024-11-11 14:34:12 +01:00
locking.c btrfs: remove unused btrfs_try_tree_write_lock() 2024-11-11 14:34:14 +01:00
locking.h btrfs: add assertions and comment about path expectations to btrfs_cross_ref_exist() 2024-12-18 02:32:25 +01:00
lru_cache.c btrfs: fix typos found by codespell 2023-12-15 23:00:04 +01:00
lru_cache.h btrfs: cleanup recursive include of the same header 2024-07-11 15:33:22 +02:00
lzo.c btrfs: lzo: drop unused paramter level from lzo_alloc_workspace() 2024-11-11 14:34:16 +01:00
Makefile btrfs: selftests: add delayed ref self test cases 2024-12-11 05:07:34 +01:00
messages.c btrfs: disable rate limiting when debug enabled 2024-10-01 19:29:41 +02:00
messages.h btrfs: constify fs_info parameter in __btrfs_panic() 2023-12-15 20:27:02 +01:00
misc.h btrfs: constify pointer parameters where applicable 2024-07-11 15:33:22 +02:00
ordered-data.c cxl changes for v6.13 2024-11-22 12:33:52 -08:00
ordered-data.h btrfs: convert btrfs_mark_ordered_io_finished() to take a folio 2024-09-10 16:51:14 +02:00
orphan.c btrfs: BTRFS_PATH_AUTO_FREE in orphan.c 2024-09-10 16:51:22 +02:00
orphan.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
print-tree.c btrfs: avoid using fixed char array size for tree names 2024-08-02 22:44:27 +02:00
print-tree.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
props.c btrfs: pass a btrfs_inode to btrfs_set_prop() 2024-07-11 15:33:29 +02:00
props.h btrfs: pass a btrfs_inode to btrfs_set_prop() 2024-07-11 15:33:29 +02:00
qgroup.c btrfs: improve the warning and error message for btrfs_remove_qgroup() 2024-12-13 22:45:59 +01:00
qgroup.h btrfs: drop unused transaction parameter from btrfs_qgroup_add_swapped_blocks() 2024-11-11 14:34:16 +01:00
raid56.c btrfs: make assert_rbio() to only check CONFIG_BTRFS_ASSERT 2024-11-11 14:34:12 +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: removed unused variable length in btrfs_insert_one_raid_extent() 2024-12-13 22:45:59 +01:00
raid-stripe-tree.h btrfs: tests: add selftests for raid-stripe-tree 2024-11-11 14:34:14 +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: fix use-after-free after invalid ref action 2024-11-29 16:52:29 +01:00
ref-verify.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
reflink.c btrfs: convert copy_inline_to_page() to use folio 2024-09-10 16:51:21 +02:00
reflink.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
relocation.c btrfs: check folio mapping after unlock in relocate_one_folio() 2024-12-18 01:20:16 +01:00
relocation.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
root-tree.c btrfs: change root->root_key.objectid to btrfs_root_id() 2024-05-07 21:31:06 +02:00
root-tree.h btrfs: qgroup: fix qgroup prealloc rsv leak in subvolume operations 2024-04-02 19:18:23 +02:00
scrub.c btrfs: drop unused parameter map from scrub_simple_mirror() 2024-11-11 14:34:16 +01:00
scrub.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
send.c btrfs: check folio mapping after unlock in put_file_data() 2024-12-18 02:23:51 +01:00
send.h btrfs: split out CONFIG_BTRFS_EXPERIMENTAL from CONFIG_BTRFS_DEBUG 2024-11-11 14:34:12 +01:00
space-info.c btrfs: zoned: reclaim unused zone by zone resetting 2024-12-11 05:07:34 +01:00
space-info.h btrfs: zoned: reclaim unused zone by zone resetting 2024-12-11 05:07:34 +01:00
subpage.c btrfs: remove check for NULL fs_info at btrfs_folio_end_lock_bitmap() 2024-11-11 14:34:22 +01:00
subpage.h btrfs: rename btrfs_folio_(set|start|end)_writer_lock() 2024-11-11 14:34:18 +01:00
super.c btrfs: output the reason for open_ctree() failure 2024-12-13 22:45:59 +01:00
super.h btrfs: change BTRFS_MOUNT_* flags to 64bit type 2024-07-19 17:20:23 +02:00
sysfs.c btrfs: sysfs: advertise experimental features only if CONFIG_BTRFS_EXPERIMENTAL=y 2024-11-28 20:46:59 +01:00
sysfs.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
transaction.c btrfs: drop fs_info argument from btrfs_update_space_info_*() 2024-12-11 05:07:34 +01:00
transaction.h btrfs: correct typos in multiple comments across various files 2024-11-11 14:34:14 +01:00
tree-checker.c btrfs: tree-checker: reject inline extent items with 0 ref count 2024-12-13 22:45:49 +01:00
tree-checker.h btrfs: simplify arguments for btrfs_verify_level_key() 2024-11-11 14:34:18 +01:00
tree-log.c btrfs: drop unused parameter ctx from batch_delete_dir_index_items() 2024-11-11 14:34:15 +01:00
tree-log.h btrfs: avoid transaction commit on any fsync after subvolume creation 2024-07-11 15:33:24 +02:00
tree-mod-log.c btrfs: drop unused parameter path from btrfs_tree_mod_log_rewind() 2024-11-11 14:34:15 +01:00
tree-mod-log.h btrfs: drop unused parameter path from btrfs_tree_mod_log_rewind() 2024-11-11 14:34:15 +01:00
ulist.c btrfs: preallocate ulist memory for qgroup rsv 2024-07-11 15:33:26 +02:00
ulist.h btrfs: preallocate ulist memory for qgroup rsv 2024-07-11 15:33:26 +02:00
uuid-tree.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
uuid-tree.h btrfs: move uuid tree related code to uuid-tree.[ch] 2024-09-10 16:51:12 +02:00
verity.c btrfs: add and use helper to verify the calling task has locked the inode 2024-09-10 16:51:22 +02:00
verity.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
volumes.c btrfs: do not clear read-only when adding sprout device 2024-11-11 14:34:18 +01:00
volumes.h btrfs: remove unused btrfs_is_parity_mirror() 2024-11-11 14:34:14 +01:00
xattr.c btrfs: drop unused parameter fs_info from btrfs_match_dir_item_name() 2024-11-11 14:34:17 +01:00
xattr.h btrfs: constify pointer parameters where applicable 2024-07-11 15:33:22 +02:00
zlib.c btrfs: zlib: make the compression path to handle sector size < page size 2024-11-11 14:34:12 +01:00
zoned.c btrfs: zoned: reclaim unused zone by zone resetting 2024-12-11 05:07:34 +01:00
zoned.h btrfs: zoned: reclaim unused zone by zone resetting 2024-12-11 05:07:34 +01:00
zstd.c btrfs: zstd: assert the timer pointer in callback 2024-11-11 14:34:15 +01:00