Commit 35b7e476 authored by Chris Mason's avatar Chris Mason Committed by David Woodhouse
Browse files

Btrfs: fix page cache memory leak

parent 090d1875
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -22,9 +22,7 @@ int set_radix_bit(struct radix_tree_root *radix, unsigned long bit)
			return -ENOMEM;
		memset(bits + 1, 0, BIT_ARRAY_BYTES - sizeof(unsigned long));
		bits[0] = slot;
		radix_tree_preload(GFP_NOFS);
		ret = radix_tree_insert(radix, slot, bits);
		radix_tree_preload_end();
		if (ret)
			return ret;
	}
+3 −0
Original line number Diff line number Diff line
@@ -8,6 +8,9 @@

struct btrfs_trans_handle;
struct btrfs_transaction;
extern struct kmem_cache *btrfs_trans_handle_cachep;
extern struct kmem_cache *btrfs_transaction_cachep;
extern struct kmem_cache *btrfs_bit_radix_cachep;
extern struct kmem_cache *btrfs_path_cachep;

#define BTRFS_MAGIC "_BtRfS_M"
+6 −5
Original line number Diff line number Diff line
@@ -4,7 +4,8 @@
#include "hash.h"
#include "transaction.h"

struct btrfs_dir_item *insert_with_overflow(struct btrfs_trans_handle *trans,
static struct btrfs_dir_item *insert_with_overflow(struct btrfs_trans_handle
						   *trans,
						   struct btrfs_root *root,
						   struct btrfs_path *path,
						   struct btrfs_key *cpu_key,
+6 −2
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@
#include <linux/scatterlist.h>
#include <linux/swap.h>
#include <linux/radix-tree.h>
#include <linux/file.h>
#include <linux/writeback.h>
#include "ctree.h"
#include "disk-io.h"
#include "transaction.h"
@@ -694,7 +694,7 @@ static int free_fs_root(struct btrfs_fs_info *fs_info, struct btrfs_root *root)
	return 0;
}

int del_fs_roots(struct btrfs_fs_info *fs_info)
static int del_fs_roots(struct btrfs_fs_info *fs_info)
{
	int ret;
	struct btrfs_root *gang[8];
@@ -781,3 +781,7 @@ void btrfs_block_release(struct btrfs_root *root, struct buffer_head *buf)
	brelse(buf);
}

void btrfs_btree_balance_dirty(struct btrfs_root *root)
{
	balance_dirty_pages_ratelimited(root->fs_info->btree_inode->i_mapping);
}
+2 −0
Original line number Diff line number Diff line
@@ -55,4 +55,6 @@ int btrfs_insert_dev_radix(struct btrfs_root *root,
			   u64 num_blocks);
int btrfs_map_bh_to_logical(struct btrfs_root *root, struct buffer_head *bh,
			     u64 logical);
int btrfs_releasepage(struct page *page, gfp_t flags);
void btrfs_btree_balance_dirty(struct btrfs_root *root);
#endif
Loading