linux/fs/btrfs
Josef Bacik 0b530bc5e1 btrfs: hold a ref on the root in build_backref_tree
This is trickier than the previous conversions.  We have backref_node's
that need to hold onto their root for their lifetime.  Do the read of
the root and grab the ref.  If at any point we don't use the root we
discard it, however if we use it in our backref node we don't free it
until we free the backref node.  Any time we switch the root's for the
backref node we need to drop our ref on the old root and grab the ref on
the new root, and if we dupe a node we need to get a ref on the root
there as well.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2020-03-23 17:01:29 +01:00
..
tests btrfs: Correctly handle empty trees in find_first_clear_extent_bit 2020-01-31 14:01:29 +01:00
acl.c
async-thread.c btrfs: add __pure attribute to functions 2019-11-18 12:46:52 +01:00
async-thread.h btrfs: add __pure attribute to functions 2019-11-18 12:46:52 +01:00
backref.c btrfs: hold a ref on the root in resolve_indirect_ref 2020-03-23 17:01:27 +01:00
backref.h btrfs: fiemap: preallocate ulists for btrfs_check_shared 2019-07-01 13:34:53 +02:00
block-group.c btrfs: fix removal of raid[56|1c34} incompat flags after removing block group 2020-03-20 21:31:32 +01:00
block-group.h btrfs: Move and unexport btrfs_rmap_block 2020-01-23 17:24:34 +01:00
block-rsv.c btrfs: add a comment describing block reserves 2020-03-23 17:01:26 +01:00
block-rsv.h btrfs: migrate the global_block_rsv helpers to block-rsv.c 2019-07-02 12:30:55 +02:00
btrfs_inode.h btrfs: introduce per-inode file extent tree 2020-03-23 17:01:24 +01:00
check-integrity.c btrfs: remove superfluous BUG_ON() in integrity checks 2020-01-20 16:40:52 +01:00
check-integrity.h
compression.c btrfs: use larger zlib buffer for s390 hardware compression 2020-01-31 10:30:40 -08:00
compression.h btrfs: compression: remove ops pointer from workspace_manager 2019-11-18 12:46:59 +01:00
ctree.c Btrfs: don't iterate mod seq list when putting a tree mod seq 2020-03-23 17:01:23 +01:00
ctree.h btrfs: introduce per-inode file extent tree 2020-03-23 17:01:24 +01:00
delalloc-space.c btrfs: add a comment describing delalloc space reservation 2020-03-23 17:01:27 +01:00
delalloc-space.h btrfs: migrate the delalloc space stuff to it's own home 2019-07-04 17:26:17 +02:00
delayed-inode.c btrfs: use the file extent tree infrastructure 2020-03-23 17:01:24 +01:00
delayed-inode.h
delayed-ref.c Btrfs: fix race between adding and putting tree mod seq elements and nodes 2020-01-31 14:01:20 +01:00
delayed-ref.h btrfs: migrate the delayed refs rsv code 2019-07-04 17:26:17 +02:00
dev-replace.c btrfs: Add overview of device replace 2020-03-23 17:01:23 +01:00
dev-replace.h btrfs: add __pure attribute to functions 2019-11-18 12:46:52 +01:00
dir-item.c btrfs: remove unused parameter fs_info from btrfs_extend_item 2019-04-29 19:02:50 +02:00
discard.c btrfs: add correction to handle -1 edge case in async discard 2020-01-20 16:41:01 +01:00
discard.h btrfs: have multiple discard lists 2020-01-20 16:41:00 +01:00
disk-io.c btrfs: hold a ref on fs roots while they're in the radix tree 2020-03-23 17:01:27 +01:00
disk-io.h btrfs: handle NULL roots in btrfs_put/btrfs_grab_fs_root 2020-03-23 17:01:26 +01:00
export.c btrfs: hold a root ref in btrfs_get_dentry 2020-03-23 17:01:27 +01:00
export.h
extent_io.c btrfs: introduce per-inode file extent tree 2020-03-23 17:01:24 +01:00
extent_io.h btrfs: drop create parameter to btrfs_get_extent() 2020-01-20 16:40:55 +01:00
extent_map.c Btrfs: fix race between using extent maps and merging them 2020-02-12 17:16:46 +01:00
extent_map.h btrfs: remove extent_map::bdev 2019-11-18 23:43:44 +01:00
extent-io-tree.h btrfs: introduce per-inode file extent tree 2020-03-23 17:01:24 +01:00
extent-tree.c btrfs: handle logged extent failure properly 2020-02-19 00:39:08 +01:00
file-item.c btrfs: introduce per-inode file extent tree 2020-03-23 17:01:24 +01:00
file.c btrfs: hold a ref on the root in __btrfs_run_defrag_inode 2020-03-23 17:01:27 +01:00
free-space-cache.c btrfs: ensure removal of discardable_* in free_bitmap() 2020-01-20 16:41:01 +01:00
free-space-cache.h btrfs: have multiple discard lists 2020-01-20 16:41:00 +01:00
free-space-tree.c btrfs: rename btrfs_block_group_cache 2019-11-18 17:51:51 +01:00
free-space-tree.h btrfs: rename btrfs_block_group_cache 2019-11-18 17:51:51 +01:00
inode-item.c btrfs: Make btrfs_find_name_in_ext_backref return struct btrfs_inode_extref 2019-09-09 14:59:16 +02:00
inode-map.c btrfs: keep track of which extents have been discarded 2020-01-20 16:40:57 +01:00
inode-map.h
inode.c btrfs: hold a ref on the root in fixup_tree_root_location 2020-03-23 17:01:28 +01:00
ioctl.c btrfs: hold ref on root in btrfs_ioctl_default_subvol 2020-03-23 17:01:29 +01:00
Kconfig btrfs: add Kconfig dependency for BLAKE2B 2019-12-09 17:56:06 +01:00
locking.c btrfs: document extent buffer locking 2019-11-18 17:51:50 +01:00
locking.h btrfs: move btrfs_unlock_up_safe to other locking functions 2019-11-18 12:46:49 +01:00
lzo.c btrfs: compression: inline free_workspace 2019-11-18 12:46:59 +01:00
Makefile btrfs: add the beginning of async discard, discard workqueue 2020-01-20 16:40:57 +01:00
misc.h btrfs: add 64bit safe helper for power of two checks 2019-11-18 12:46:50 +01:00
ordered-data.c btrfs: delete the ordered isize update code 2020-03-23 17:01:24 +01:00
ordered-data.h btrfs: delete the ordered isize update code 2020-03-23 17:01:24 +01:00
orphan.c
print-tree.c btrfs: Remove unneeded semicolon 2020-01-20 16:40:55 +01:00
print-tree.h
props.c btrfs: props: remove unnecessary hash_init() 2019-11-18 12:46:55 +01:00
props.h btrfs: delete unused function btrfs_set_prop_trans 2019-04-29 19:02:54 +02:00
qgroup.c btrfs: destroy qgroup extent records on transaction abort 2020-02-19 00:35:54 +01:00
qgroup.h btrfs: destroy qgroup extent records on transaction abort 2020-02-19 00:35:54 +01:00
raid56.c btrfs: remove pointless local variable in lock_stripe_add() 2019-11-18 12:47:00 +01:00
raid56.h btrfs: constify map parameter for nr_parity_stripes and nr_data_stripes 2019-07-01 13:34:58 +02:00
rcu-string.h
reada.c btrfs: rename btrfs_block_group_cache 2019-11-18 17:51:51 +01:00
ref-verify.c btrfs: ref-verify: fix memory leaks 2020-02-12 17:16:31 +01:00
ref-verify.h btrfs: ref-verify: Use btrfs_ref to refactor btrfs_ref_tree_mod() 2019-04-29 19:02:49 +02:00
relocation.c btrfs: hold a ref on the root in build_backref_tree 2020-03-23 17:01:29 +01:00
root-tree.c btrfs: make btrfs_find_orphan_roots use btrfs_get_fs_root 2020-03-23 17:01:25 +01:00
scrub.c btrfs: open code btrfs_read_fs_root_no_name 2020-03-23 17:01:26 +01:00
send.c btrfs: open code btrfs_read_fs_root_no_name 2020-03-23 17:01:26 +01:00
send.h
space-info.c btrfs: describe the space reservation system in general 2020-03-23 17:01:27 +01:00
space-info.h btrfs: take overcommit into account in inc_block_group_ro 2020-01-31 14:02:01 +01:00
struct-funcs.c btrfs: tie extent buffer and it's token together 2019-09-09 14:59:16 +02:00
super.c btrfs: open code btrfs_read_fs_root_no_name 2020-03-23 17:01:26 +01:00
sysfs.c btrfs: sysfs, move device id directories to UUID/devinfo 2020-02-12 18:28:22 +01:00
sysfs.h btrfs: sysfs, add devid/dev_state kobject and device attributes 2020-01-23 17:24:36 +01:00
transaction.c btrfs: open code btrfs_read_fs_root_no_name 2020-03-23 17:01:26 +01:00
transaction.h btrfs: Rename btrfs_join_transaction_nolock 2019-11-18 12:46:54 +01:00
tree-checker.c btrfs: tree-checker: Verify location key for DIR_ITEM/DIR_INDEX 2020-01-20 16:40:56 +01:00
tree-checker.h
tree-defrag.c
tree-log.c btrfs: open code btrfs_read_fs_root_no_name 2020-03-23 17:01:26 +01:00
tree-log.h
ulist.c
ulist.h
uuid-tree.c btrfs: handle ENOENT in btrfs_uuid_tree_iterate 2019-12-13 14:10:45 +01:00
volumes.c btrfs: open code btrfs_read_fs_root_no_name 2020-03-23 17:01:26 +01:00
volumes.h for-5.6-rc1-tag 2020-02-16 11:43:45 -08:00
xattr.c Btrfs: fix failure to persist compression property xattr deletion on fsync 2019-06-17 16:37:17 +02:00
xattr.h
zlib.c btrfs: use larger zlib buffer for s390 hardware compression 2020-01-31 10:30:40 -08:00
zstd.c btrfs: compression: inline free_workspace 2019-11-18 12:46:59 +01:00