OSDN Git Service

btrfs: assert tree lock is held when removing free space entries
authorFilipe Manana <fdmanana@suse.com>
Thu, 4 May 2023 11:04:26 +0000 (12:04 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Jun 2023 11:59:24 +0000 (13:59 +0200)
commit7e5ba559941f011389936d49641304ed45e8b6a7
tree1d206cba4f3ef1339600d1439f60b8a5d2f23c81
parent9649bd9a29a7da97eca456befd275ee16e3a2291
btrfs: assert tree lock is held when removing free space entries

Removing a free space entry from an in memory space cache requires having
the corresponding btrfs_free_space_ctl's 'tree_lock' held. We have several
code paths that remove an entry, so add assertions where appropriate to
verify we are holding the lock, as the lock is acquired by some other
function up in the call chain, which makes it easy to miss in the future.

Note: for this to work we need to lock the local btrfs_free_space_ctl at
load_free_space_cache(), which was not being done because it's local,
declared on the stack, so no other task has access to it.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/free-space-cache.c