Loading fs/btrfs/extent_map.c +7 −1 Original line number Diff line number Diff line Loading @@ -2047,7 +2047,7 @@ static int add_lru(struct extent_map_tree *tree, struct extent_buffer *eb) rm = list_entry(tree->buffer_lru.prev, struct extent_buffer, lru); tree->lru_size--; list_del(&rm->lru); list_del_init(&rm->lru); free_extent_buffer(rm); } } else Loading Loading @@ -2187,6 +2187,9 @@ struct extent_buffer *alloc_extent_buffer(struct extent_map_tree *tree, return eb; fail: spin_lock(&tree->lru_lock); list_del_init(&eb->lru); spin_unlock(&tree->lru_lock); if (!atomic_dec_and_test(&eb->refs)) return NULL; for (index = 0; index < i; index++) { Loading Loading @@ -2246,6 +2249,9 @@ struct extent_buffer *find_extent_buffer(struct extent_map_tree *tree, spin_unlock(&tree->lru_lock); return eb; fail: spin_lock(&tree->lru_lock); list_del_init(&eb->lru); spin_unlock(&tree->lru_lock); if (!atomic_dec_and_test(&eb->refs)) return NULL; for (index = 0; index < i; index++) { Loading Loading
fs/btrfs/extent_map.c +7 −1 Original line number Diff line number Diff line Loading @@ -2047,7 +2047,7 @@ static int add_lru(struct extent_map_tree *tree, struct extent_buffer *eb) rm = list_entry(tree->buffer_lru.prev, struct extent_buffer, lru); tree->lru_size--; list_del(&rm->lru); list_del_init(&rm->lru); free_extent_buffer(rm); } } else Loading Loading @@ -2187,6 +2187,9 @@ struct extent_buffer *alloc_extent_buffer(struct extent_map_tree *tree, return eb; fail: spin_lock(&tree->lru_lock); list_del_init(&eb->lru); spin_unlock(&tree->lru_lock); if (!atomic_dec_and_test(&eb->refs)) return NULL; for (index = 0; index < i; index++) { Loading Loading @@ -2246,6 +2249,9 @@ struct extent_buffer *find_extent_buffer(struct extent_map_tree *tree, spin_unlock(&tree->lru_lock); return eb; fail: spin_lock(&tree->lru_lock); list_del_init(&eb->lru); spin_unlock(&tree->lru_lock); if (!atomic_dec_and_test(&eb->refs)) return NULL; for (index = 0; index < i; index++) { Loading