btrfs: assert tree mod log lock in __tree_mod_log_insert
authorDavid Sterba <dsterba@suse.com>
Wed, 27 Mar 2019 15:19:55 +0000 (16:19 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 9 Sep 2019 12:59:00 +0000 (14:59 +0200)
The tree is going to be modified so it must be the exclusive lock.

Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ctree.c

index 5df76c17775ad4650c6deb71617f9e2e5b75f2b1..9d1d0a926cb0e30942594f30a884619cb98ebbc8 100644 (file)
@@ -376,8 +376,6 @@ void btrfs_put_tree_mod_seq(struct btrfs_fs_info *fs_info,
  * The 'start address' is the logical address of the *new* root node
  * for root replace operations, or the logical address of the affected
  * block for all other operations.
- *
- * Note: must be called with write lock for fs_info::tree_mod_log_lock.
  */
 static noinline int
 __tree_mod_log_insert(struct btrfs_fs_info *fs_info, struct tree_mod_elem *tm)
@@ -387,6 +385,8 @@ __tree_mod_log_insert(struct btrfs_fs_info *fs_info, struct tree_mod_elem *tm)
        struct rb_node *parent = NULL;
        struct tree_mod_elem *cur;
 
+       lockdep_assert_held_write(&fs_info->tree_mod_log_lock);
+
        tm->seq = btrfs_inc_tree_mod_seq(fs_info);
 
        tm_root = &fs_info->tree_mod_log;