]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: assert extent map is not in a list when setting it up
authorFilipe Manana <fdmanana@suse.com>
Mon, 4 Dec 2023 16:20:23 +0000 (16:20 +0000)
committerDavid Sterba <dsterba@suse.com>
Fri, 15 Dec 2023 21:59:01 +0000 (22:59 +0100)
When setting up a new extent map, at setup_extent_mapping(), we're doing
a list move operation to add the extent map the tree's list of modified
extents. This is confusing because at this point the extent map can not
be in any list, because it's a new extent map. So replace the list move
with a list add and add an assertion that checks that the extent map is
not currently in any list.

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/extent_map.c

index 80f86503a5cde1238c23d5d02d9e0f521c4b83ee..d29097a8550a4ce9d897905dfaa98a398642ad05 100644 (file)
@@ -345,8 +345,10 @@ static inline void setup_extent_mapping(struct extent_map_tree *tree,
        em->mod_start = em->start;
        em->mod_len = em->len;
 
+       ASSERT(list_empty(&em->list));
+
        if (modified)
-               list_move(&em->list, &tree->modified_extents);
+               list_add(&em->list, &tree->modified_extents);
        else
                try_merge_map(tree, em);
 }