Madhuparna Bhowmik
7650522178
btrfs: add RCU locks around block group initialization
...
[ Upstream commit 29566c9c773456467933ee22bbca1c2b72a3506c ]
The space_info list is normally RCU protected and should be traversed
with rcu_read_lock held. There's a warning
[29.104756] WARNING: suspicious RCU usage
[29.105046] 5.6.0-rc4-next-20200305 #1 Not tainted
[29.105231] -----------------------------
[29.105401] fs/btrfs/block-group.c:2011 RCU-list traversed in non-reader section!!
pointing out that the locking is missing in btrfs_read_block_groups.
However this is not necessary as the list traversal happens at mount
time when there's no other thread potentially accessing the list.
To fix the warning and for consistency let's add the RCU lock/unlock,
the code won't be affected much as it's doing some lightweight
operations.
Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-04-23 10:36:34 +02:00
..
tests
btrfs: Correctly handle empty trees in find_first_clear_extent_bit
2020-02-11 04:35:34 -08:00
acl.c
async-thread.c
Btrfs: fix crash during unmount due to race with delayed inode workers
2020-04-17 10:50:15 +02:00
async-thread.h
Btrfs: fix crash during unmount due to race with delayed inode workers
2020-04-17 10:50:15 +02:00
backref.c
Btrfs: fix deadlock between fiemap and transaction commits
2019-07-30 18:25:12 +02:00
backref.h
block-group.c
btrfs: add RCU locks around block group initialization
2020-04-23 10:36:34 +02:00
block-group.h
btrfs: move struct io_ctl to free-space-cache.h
2019-09-09 14:59:15 +02:00
block-rsv.c
btrfs: use btrfs_try_granting_tickets in update_global_rsv
2019-09-09 14:59:19 +02: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
check-integrity.c
btrfs: fix possible NULL-pointer dereference in integrity checks
2020-02-24 08:36:53 +01:00
check-integrity.h
compression.c
btrfs: move cond_wake_up functions out of ctree
2019-09-09 14:59:15 +02:00
compression.h
btrfs: compression: replace set_level callbacks by a common helper
2019-09-09 14:59:11 +02:00
ctree.c
Btrfs: fix race between adding and putting tree mod seq elements and nodes
2020-02-11 04:35:34 -08:00
ctree.h
btrfs: separate definition of assertion failure handlers
2020-02-24 08:36:56 +01:00
delalloc-space.c
Btrfs: fix qgroup double free after failure to reserve metadata for delalloc
2019-10-17 20:13:44 +02: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 nofs allocations for running delayed items
2020-04-17 10:50:15 +02:00
delayed-inode.h
delayed-ref.c
Btrfs: fix race between adding and putting tree mod seq elements and nodes
2020-02-11 04:35:34 -08:00
delayed-ref.h
btrfs: migrate the delayed refs rsv code
2019-07-04 17:26:17 +02:00
dev-replace.c
btrfs: move cond_wake_up functions out of ctree
2019-09-09 14:59:15 +02:00
dev-replace.h
dir-item.c
disk-io.c
btrfs: set update the uuid generation as soon as possible
2020-04-17 10:50:15 +02:00
disk-io.h
btrfs: Make reada_tree_block_flagged private
2019-09-09 14:59:11 +02:00
export.c
export.h
extent-tree.c
btrfs: handle logged extent failure properly
2020-02-28 17:22:13 +01:00
extent_io.c
btrfs: Don't submit any btree write bio if the fs has errors
2020-04-17 10:50:15 +02:00
extent_io.h
btrfs: Remove delalloc_end argument from extent_clear_unlock_delalloc
2019-09-09 14:58:59 +02:00
extent_map.c
Btrfs: fix race between using extent maps and merging them
2020-02-19 19:53:00 +01:00
extent_map.h
file-item.c
btrfs: safely advance counter when looking up bio csums
2020-02-24 08:36:53 +01:00
file.c
btrfs: fix missing semaphore unlock in btrfs_sync_file
2020-04-17 10:50:15 +02:00
free-space-cache.c
btrfs: check page->mapping when loading free space cache
2019-12-17 19:56:02 +01:00
free-space-cache.h
btrfs: move struct io_ctl to free-space-cache.h
2019-09-09 14:59:15 +02:00
free-space-tree.c
btrfs: move basic block_group definitions to their own header
2019-09-09 14:59:03 +02:00
free-space-tree.h
btrfs: move basic block_group definitions to their own header
2019-09-09 14:59:03 +02: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: qgroup: Always free PREALLOC META reserve in btrfs_delalloc_release_extents()
2019-10-15 18:50:07 +02:00
inode-map.h
inode.c
btrfs: fix log context list corruption after rename whiteout error
2020-03-25 08:25:56 +01:00
ioctl.c
Btrfs: make deduplication with range including the last block work
2020-02-11 04:35:33 -08:00
Kconfig
btrfs: Fix build error while LIBCRC32C is module
2019-07-17 17:03:30 +02:00
locking.c
btrfs: move cond_wake_up functions out of ctree
2019-09-09 14:59:15 +02:00
locking.h
btrfs: Remove unused locking functions
2019-09-09 14:58:59 +02:00
lzo.c
btrfs: compression: replace set_level callbacks by a common helper
2019-09-09 14:59:11 +02:00
Makefile
btrfs: migrate the block group lookup code
2019-09-09 14:59:04 +02:00
misc.h
btrfs: move math functions to misc.h
2019-09-09 14:59:15 +02:00
ordered-data.c
Btrfs: fix btrfs_wait_ordered_range() so that it waits for all ordered extents
2020-02-28 17:22:24 +01:00
ordered-data.h
orphan.c
print-tree.c
print-tree.h
props.c
btrfs: rename the btrfs_calc_*_metadata_size helpers
2019-09-09 14:59:13 +02:00
props.h
qgroup.c
btrfs: qgroup: ensure qgroup_rescan_running is only set when the worker is at least queued
2020-04-17 10:50:05 +02:00
qgroup.h
btrfs: destroy qgroup extent records on transaction abort
2020-02-28 17:22:23 +01:00
raid56.c
btrfs: get rid of unique workqueue helper functions
2020-01-09 10:20:06 +01:00
raid56.h
rcu-string.h
reada.c
btrfs: get rid of unique workqueue helper functions
2020-01-09 10:20:06 +01:00
ref-verify.c
btrfs: ref-verify: fix memory leaks
2020-02-19 19:53:00 +01:00
ref-verify.h
relocation.c
btrfs: check commit root generation in should_ignore_root
2020-04-21 09:04:59 +02:00
root-tree.c
btrfs: do not delete mismatched root refs
2020-01-23 08:22:40 +01:00
scrub.c
btrfs: get rid of unique workqueue helper functions
2020-01-09 10:20:06 +01:00
send.c
btrfs: send: remove WARN_ON for readonly mount
2019-12-31 16:41:59 +01:00
send.h
space-info.c
Btrfs: fix race leading to metadata space leak after task received signal
2019-10-25 19:11:34 +02:00
space-info.h
btrfs: rename btrfs_space_info_add_old_bytes
2019-09-09 14:59:18 +02:00
struct-funcs.c
btrfs: tie extent buffer and it's token together
2019-09-09 14:59:16 +02:00
super.c
btrfs: log message when rw remount is attempted with unclean tree-log
2020-02-19 19:53:01 +01:00
sysfs.c
btrfs: sysfs: move helper macros to sysfs.c
2019-09-09 14:59:08 +02:00
sysfs.h
btrfs: sysfs: move helper macros to sysfs.c
2019-09-09 14:59:08 +02:00
transaction.c
btrfs: destroy qgroup extent records on transaction abort
2020-02-28 17:22:23 +01:00
transaction.h
Btrfs: fix deadlock between fiemap and transaction commits
2019-07-30 18:25:12 +02:00
tree-checker.c
Btrfs: make tree checker detect checksum items with overlapping ranges
2019-12-31 16:41:55 +01:00
tree-checker.h
tree-defrag.c
tree-log.c
Btrfs: fix infinite loop during fsync after rename operations
2020-02-11 04:35:33 -08:00
tree-log.h
ulist.c
ulist.h
uuid-tree.c
btrfs: handle ENOENT in btrfs_uuid_tree_iterate
2019-12-31 16:42:05 +01:00
volumes.c
btrfs: Fix split-brain handling when changing FSID to metadata uuid
2020-02-24 08:36:56 +01:00
volumes.h
btrfs: Remove btrfs_bio::flags member
2019-12-17 19:56:06 +01:00
xattr.c
xattr.h
zlib.c
btrfs: compression: replace set_level callbacks by a common helper
2019-09-09 14:59:11 +02:00
zstd.c
btrfs: move cond_wake_up functions out of ctree
2019-09-09 14:59:15 +02:00