summaryrefslogtreecommitdiff
path: root/fs/ext2
diff options
context:
space:
mode:
authorChristoph Lameter <cl@linux-foundation.org>2008-08-11 08:06:28 -0700
committerPekka Enberg <penberg@cs.helsinki.fi>2008-11-03 11:19:07 +0200
commita016316800da95fa8d17ff5c84de7d7c4ed55768 (patch)
tree8c2df1feb18e6cf4e0a37b5cf2f8dcd4f3b848d0 /fs/ext2
parent3152908b10b8c01c3fbebeb5314ac273247bb04b (diff)
Filesystem: Ext2 filesystem defrag
Support defragmentation for ext2 filesystem inodes Reviewed-by: Rik van Riel <riel@redhat.com> Signed-off-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Christoph Lameter <cl@linux-foundation.org> Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Diffstat (limited to 'fs/ext2')
-rw-r--r--fs/ext2/super.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 647cd888ac87..cf26ff18a795 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -171,6 +171,12 @@ static void init_once(void *foo)
inode_init_once(&ei->vfs_inode);
}
+static void *ext2_get_inodes(struct kmem_cache *s, int nr, void **v)
+{
+ return fs_get_inodes(s, nr, v,
+ offsetof(struct ext2_inode_info, vfs_inode));
+}
+
static int init_inodecache(void)
{
ext2_inode_cachep = kmem_cache_create("ext2_inode_cache",
@@ -180,6 +186,9 @@ static int init_inodecache(void)
init_once);
if (ext2_inode_cachep == NULL)
return -ENOMEM;
+
+ kmem_cache_setup_defrag(ext2_inode_cachep,
+ ext2_get_inodes, kick_inodes);
return 0;
}