]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
btrfs: assert delayed refs lock is held at find_ref_head()
authorFilipe Manana <fdmanana@suse.com>
Wed, 23 Oct 2024 11:41:17 +0000 (12:41 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 11 Nov 2024 13:34:20 +0000 (14:34 +0100)
We have 3 callers for find_ref_head() so assert at find_ref_head() that we
have the delayed refs lock held, removing the assertion from one of its
callers (btrfs_find_delayed_ref_head()).

Reviewed-by: Boris Burkov <boris@bur.io>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/delayed-ref.c

index ad067c7780db7677950f080946fa3421e33206e4..9f8853fb9fa6626766375250a5e95e698a9d389c 100644 (file)
@@ -407,6 +407,8 @@ static struct btrfs_delayed_ref_head *find_ref_head(
        struct rb_node *n;
        struct btrfs_delayed_ref_head *entry;
 
+       lockdep_assert_held(&dr->lock);
+
        n = root->rb_node;
        entry = NULL;
        while (n) {
@@ -1195,8 +1197,6 @@ btrfs_find_delayed_ref_head(const struct btrfs_fs_info *fs_info,
                            struct btrfs_delayed_ref_root *delayed_refs,
                            u64 bytenr)
 {
-       lockdep_assert_held(&delayed_refs->lock);
-
        return find_ref_head(fs_info, delayed_refs, bytenr, false);
 }