summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/transaction.c
diff options
context:
space:
mode:
authorChris Mason2007-10-15 22:14:48 +0200
committerChris Mason2008-09-25 17:03:56 +0200
commitf510cfecfc98759d75283823cfccf0cc0d59a4c6 (patch)
treedfc2f788df4e2a437d976f78a2a2a675375f7134 /fs/btrfs/transaction.c
parentBtrfs: Go back to kmaps instead of page_address in extent_buffers (diff)
downloadkernel-qcow2-linux-f510cfecfc98759d75283823cfccf0cc0d59a4c6.tar.gz
kernel-qcow2-linux-f510cfecfc98759d75283823cfccf0cc0d59a4c6.tar.xz
kernel-qcow2-linux-f510cfecfc98759d75283823cfccf0cc0d59a4c6.zip
Btrfs: Fix extent_buffer and extent_state leaks
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/transaction.c')
-rw-r--r--fs/btrfs/transaction.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index 750f35a37aae..372b61f5733f 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -352,7 +352,7 @@ int btrfs_defrag_root(struct btrfs_root *root, int cacheonly)
return 0;
trans = btrfs_start_transaction(root, 1);
- while (1) {
+ while (0) {
root->defrag_running = 1;
ret = btrfs_defrag_leaves(trans, root, cacheonly);
nr = trans->blocks_used;
@@ -394,7 +394,7 @@ int btrfs_defrag_dirty_roots(struct btrfs_fs_info *info)
for (i = 0; i < ret; i++) {
root = gang[i];
last = root->root_key.objectid + 1;
- // btrfs_defrag_root(root, 1);
+ btrfs_defrag_root(root, 1);
}
}
// btrfs_defrag_root(info->extent_root, 1);
@@ -462,6 +462,7 @@ static int drop_dirty_roots(struct btrfs_root *tree_root,
ret = btrfs_end_transaction(trans, tree_root);
BUG_ON(ret);
+ free_extent_buffer(dirty->root->node);
kfree(dirty->root);
kfree(dirty);
mutex_unlock(&tree_root->fs_info->fs_mutex);