From c49fc0c0c3d6ee095280c86f4178eb6e25766fc5 Mon Sep 17 00:00:00 2001 From: Josef Bacik Date: Fri, 24 Jun 2011 16:02:51 +0000 Subject: [PATCH] --- yaml --- r: 254076 b: refs/heads/master c: 9b90f5135320bc74dc6c9a8c74d69fd4821d9282 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/btrfs/free-space-cache.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 43a3800c9fa7..aafa21f08196 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e0f5406727f1dfdc47b8ba4a0ff6eae4b0b5ed4c +refs/heads/master: 9b90f5135320bc74dc6c9a8c74d69fd4821d9282 diff --git a/trunk/fs/btrfs/free-space-cache.c b/trunk/fs/btrfs/free-space-cache.c index 9f985a429877..bf0d61567f3d 100644 --- a/trunk/fs/btrfs/free-space-cache.c +++ b/trunk/fs/btrfs/free-space-cache.c @@ -1893,9 +1893,12 @@ void __btrfs_remove_free_space_cache_locked(struct btrfs_free_space_ctl *ctl) while ((node = rb_last(&ctl->free_space_offset)) != NULL) { info = rb_entry(node, struct btrfs_free_space, offset_index); - unlink_free_space(ctl, info); - kfree(info->bitmap); - kmem_cache_free(btrfs_free_space_cachep, info); + if (!info->bitmap) { + unlink_free_space(ctl, info); + kmem_cache_free(btrfs_free_space_cachep, info); + } else { + free_bitmap(ctl, info); + } if (need_resched()) { spin_unlock(&ctl->tree_lock); cond_resched();