]> git.baikalelectronics.ru Git - kernel.git/commit
btrfs: set the correct lockdep class for new nodes
authorJosef Bacik <josef@toxicpanda.com>
Mon, 10 Aug 2020 15:42:30 +0000 (11:42 -0400)
committerDavid Sterba <dsterba@suse.com>
Thu, 27 Aug 2020 12:08:52 +0000 (14:08 +0200)
commitce983329992ff55f046e3287aa023c2c1b0fc6d1
tree163f0d193c348f7f5a4ce767d47b07681ca40554
parent2a7801b04e8e2e44fa5556121d665da3a056a7b0
btrfs: set the correct lockdep class for new nodes

When flipping over to the rw_semaphore I noticed I'd get a lockdep splat
in replace_path(), which is weird because we're swapping the reloc root
with the actual target root.  Turns out this is because we're using the
root->root_key.objectid as the root id for the newly allocated tree
block when setting the lockdep class, however we need to be using the
actual owner of this new block, which is saved in owner.

The affected path is through btrfs_copy_root as all other callers of
btrfs_alloc_tree_block (which calls init_new_buffer) have root_objectid
== root->root_key.objectid .

CC: stable@vger.kernel.org # 5.4+
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent-tree.c