aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/super.c
diff options
context:
space:
mode:
authorWang Shilong <wangsl.fnst@cn.fujitsu.com>2013-08-09 01:25:36 -0400
committerChris Mason <chris.mason@fusionio.com>2013-09-01 08:16:27 -0400
commitb9e9a6cbc6d25b89d8007e5a680319e07921ead8 (patch)
tree600fe0d3d6962bf13d6efbca1ddc9cbcb4f0d06b /fs/btrfs/super.c
parent742916b885edbc6453b4769458959929746e8e7e (diff)
Btrfs: allocate prelim_ref with a slab allocater
struct __prelim_ref is allocated and freed frequently when walking backref tree, using slab allocater can not only speed up allocating but also detect memory leaks. Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com> Reviewed-by: Miao Xie <miaox@cn.fujitsu.com> Reviewed-by: Jan Schmidt <list.btrfs@jan-o-sch.net> Signed-off-by: Josef Bacik <jbacik@fusionio.com> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Diffstat (limited to 'fs/btrfs/super.c')
-rw-r--r--fs/btrfs/super.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 4d5d0f3eb0d8..3aab10ce63e8 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -56,6 +56,7 @@
56#include "rcu-string.h" 56#include "rcu-string.h"
57#include "dev-replace.h" 57#include "dev-replace.h"
58#include "free-space-cache.h" 58#include "free-space-cache.h"
59#include "backref.h"
59#include "tests/btrfs-tests.h" 60#include "tests/btrfs-tests.h"
60 61
61#define CREATE_TRACE_POINTS 62#define CREATE_TRACE_POINTS
@@ -1810,6 +1811,10 @@ static int __init init_btrfs_fs(void)
1810 if (err) 1811 if (err)
1811 goto free_auto_defrag; 1812 goto free_auto_defrag;
1812 1813
1814 err = btrfs_prelim_ref_init();
1815 if (err)
1816 goto free_prelim_ref;
1817
1813 err = btrfs_interface_init(); 1818 err = btrfs_interface_init();
1814 if (err) 1819 if (err)
1815 goto free_delayed_ref; 1820 goto free_delayed_ref;
@@ -1830,6 +1835,8 @@ static int __init init_btrfs_fs(void)
1830 1835
1831unregister_ioctl: 1836unregister_ioctl:
1832 btrfs_interface_exit(); 1837 btrfs_interface_exit();
1838free_prelim_ref:
1839 btrfs_prelim_ref_exit();
1833free_delayed_ref: 1840free_delayed_ref:
1834 btrfs_delayed_ref_exit(); 1841 btrfs_delayed_ref_exit();
1835free_auto_defrag: 1842free_auto_defrag:
@@ -1856,6 +1863,7 @@ static void __exit exit_btrfs_fs(void)
1856 btrfs_delayed_ref_exit(); 1863 btrfs_delayed_ref_exit();
1857 btrfs_auto_defrag_exit(); 1864 btrfs_auto_defrag_exit();
1858 btrfs_delayed_inode_exit(); 1865 btrfs_delayed_inode_exit();
1866 btrfs_prelim_ref_exit();
1859 ordered_data_exit(); 1867 ordered_data_exit();
1860 extent_map_exit(); 1868 extent_map_exit();
1861 extent_io_exit(); 1869 extent_io_exit();