summaryrefslogtreecommitdiff
path: root/fs/btrfs/extent-tree.c
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2007-05-02 15:53:43 -0400
committerDavid Woodhouse <dwmw2@hera.kernel.org>2007-05-02 15:53:43 -0400
commit35b7e476107e3d54f03384e0f2fa3dfd68933353 (patch)
tree51a7e7cffad309b0aa0d3d054d7ecc5b8be72298 /fs/btrfs/extent-tree.c
parent090d18753c7fb73f7d846c3a89a50cd35136d144 (diff)
downloadlwn-35b7e476107e3d54f03384e0f2fa3dfd68933353.tar.gz
lwn-35b7e476107e3d54f03384e0f2fa3dfd68933353.zip
Btrfs: fix page cache memory leak
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/extent-tree.c')
-rw-r--r--fs/btrfs/extent-tree.c12
1 files changed, 1 insertions, 11 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 2837fddf7b1c..0e20d1c42fca 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -322,18 +322,10 @@ static int update_block_group(struct btrfs_trans_handle *trans,
return 0;
}
-static int try_remove_page(struct address_space *mapping, unsigned long index)
-{
- int ret;
- ret = invalidate_mapping_pages(mapping, index, index);
- return ret;
-}
-
int btrfs_finish_extent_commit(struct btrfs_trans_handle *trans, struct
btrfs_root *root)
{
unsigned long gang[8];
- struct inode *btree_inode = root->fs_info->btree_inode;
u64 first = 0;
int ret;
int i;
@@ -348,9 +340,6 @@ int btrfs_finish_extent_commit(struct btrfs_trans_handle *trans, struct
first = gang[0];
for (i = 0; i < ret; i++) {
clear_radix_bit(pinned_radix, gang[i]);
- try_remove_page(btree_inode->i_mapping,
- gang[i] << (PAGE_CACHE_SHIFT -
- btree_inode->i_blkbits));
}
}
return 0;
@@ -983,6 +972,7 @@ int btrfs_drop_snapshot(struct btrfs_trans_handle *trans, struct btrfs_root
break;
if (wret < 0)
ret = wret;
+ btrfs_btree_balance_dirty(root);
}
for (i = 0; i <= orig_level; i++) {
if (path->nodes[i]) {