Btrfs: use a slab for ordered extents allocation

The ordered extent allocation is in the fast path of the IO, so use a slab
to improve the speed of the allocation.

 "Size of the struct is 280, so this will fall into the size-512 bucket,
  giving 8 objects per page, while own slab will pack 14 objects into a page.

  Another benefit I see is to check for leaked objects when the module is
  removed (and the cache destroy takes place)."
						-- David Sterba

Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
This commit is contained in:
Miao Xie 2012-09-06 04:01:51 -06:00 committed by Chris Mason
parent b9a8cc5bef
commit 6352b91da1
3 changed files with 31 additions and 3 deletions

View file

@ -1620,10 +1620,14 @@ static int __init init_btrfs_fs(void)
if (err)
goto free_extent_io;
err = btrfs_delayed_inode_init();
err = ordered_data_init();
if (err)
goto free_extent_map;
err = btrfs_delayed_inode_init();
if (err)
goto free_ordered_data;
err = btrfs_interface_init();
if (err)
goto free_delayed_inode;
@ -1641,6 +1645,8 @@ unregister_ioctl:
btrfs_interface_exit();
free_delayed_inode:
btrfs_delayed_inode_exit();
free_ordered_data:
ordered_data_exit();
free_extent_map:
extent_map_exit();
free_extent_io:
@ -1657,6 +1663,7 @@ static void __exit exit_btrfs_fs(void)
{
btrfs_destroy_cachep();
btrfs_delayed_inode_exit();
ordered_data_exit();
extent_map_exit();
extent_io_exit();
btrfs_interface_exit();