aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYan <yanzheng@21cn.com>2007-11-01 11:28:41 -0400
committerChris Mason <chris.mason@oracle.com>2008-09-25 11:03:57 -0400
commitb97f9203b4d672c06eca50a1b1b99e4f69e1daf8 (patch)
treedcb39177e5e5b2456107a87566ee5fcb39abcffb
parent179e29e488cc74f1e9bd67bc45f70b832740e9ec (diff)
downloadkernel_samsung_smdk4412-b97f9203b4d672c06eca50a1b1b99e4f69e1daf8.zip
kernel_samsung_smdk4412-b97f9203b4d672c06eca50a1b1b99e4f69e1daf8.tar.gz
kernel_samsung_smdk4412-b97f9203b4d672c06eca50a1b1b99e4f69e1daf8.tar.bz2
Btrfs: Fix typo and memory leak in extent-tree.c
This patch fixes a typo in update_block_group and memory leak in btrfs_free_block_groups. Signed-off-by: Chris Mason <chris.mason@oracle.com>
-rw-r--r--fs/btrfs/extent-tree.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 7de7707..e7192ea 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -588,16 +588,15 @@ static int update_block_group(struct btrfs_trans_handle *trans,
old_val < (cache->key.offset >> 1)) {
int bit_to_clear;
int bit_to_set;
-
cache->data = data;
if (data) {
- bit_to_clear = BLOCK_GROUP_DATA;
- bit_to_set = BLOCK_GROUP_METADATA;
+ bit_to_clear = BLOCK_GROUP_METADATA;
+ bit_to_set = BLOCK_GROUP_DATA;
cache->item.flags |=
BTRFS_BLOCK_GROUP_DATA;
} else {
- bit_to_clear = BLOCK_GROUP_METADATA;
- bit_to_set = BLOCK_GROUP_DATA;
+ bit_to_clear = BLOCK_GROUP_DATA;
+ bit_to_set = BLOCK_GROUP_METADATA;
cache->item.flags &=
~BTRFS_BLOCK_GROUP_DATA;
}
@@ -1459,13 +1458,16 @@ int btrfs_free_block_groups(struct btrfs_fs_info *info)
{
u64 start;
u64 end;
+ u64 ptr;
int ret;
-
while(1) {
ret = find_first_extent_bit(&info->block_group_cache, 0,
&start, &end, (unsigned int)-1);
if (ret)
break;
+ ret = get_state_private(&info->block_group_cache, start, &ptr);
+ if (!ret)
+ kfree((void *)(unsigned long)ptr);
clear_extent_bits(&info->block_group_cache, start,
end, (unsigned int)-1, GFP_NOFS);
}