The merge and split callbacks for an inode's io tree are supposed to be
called while the io tree's spinlock is being held, so that the given
extent_state records are stable, not modified or freed while the callbacks
are using them. So add lockdep assertions in the callbacks.
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>
        struct btrfs_fs_info *fs_info = inode->root->fs_info;
        u64 size;
 
+       lockdep_assert_held(&inode->io_tree.lock);
+
        /* not delalloc, ignore it */
        if (!(orig->state & EXTENT_DELALLOC))
                return;
        u64 new_size, old_size;
        u32 num_extents;
 
+       lockdep_assert_held(&inode->io_tree.lock);
+
        /* not delalloc, ignore it */
        if (!(other->state & EXTENT_DELALLOC))
                return;