summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/free-space-cache.c
diff options
context:
space:
mode:
authorLi Zefan <lizf@cn.fujitsu.com>2010-11-09 07:51:45 +0100
committerLi Zefan <lizf@cn.fujitsu.com>2011-01-26 18:04:41 +0100
commit70b7da304f9f9bbf1566085155895e32e775a745 (patch)
tree74c6de5ac85b7944292f2486b25946754d57989d /fs/btrfs/free-space-cache.c
parentbtrfs: Add helper function free_bitmap() (diff)
downloadlinux-70b7da304f9f9bbf1566085155895e32e775a745.tar.xz
linux-70b7da304f9f9bbf1566085155895e32e775a745.zip
btrfs: Free fully occupied bitmap in cluster
If there's no more free space in a bitmap, we should free it. Reviewed-by: Josef Bacik <josef@redhat.com> Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Diffstat (limited to 'fs/btrfs/free-space-cache.c')
-rw-r--r--fs/btrfs/free-space-cache.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
index 850104f05178..cb0137e4047f 100644
--- a/fs/btrfs/free-space-cache.c
+++ b/fs/btrfs/free-space-cache.c
@@ -1788,6 +1788,8 @@ static u64 btrfs_alloc_from_bitmap(struct btrfs_block_group_cache *block_group,
ret = search_start;
bitmap_clear_bits(block_group, entry, ret, bytes);
+ if (entry->bytes == 0)
+ free_bitmap(block_group, entry);
out:
spin_unlock(&cluster->lock);
spin_unlock(&block_group->tree_lock);