2007-05-18 18:13:37

by Christoph Lameter

[permalink] [raw]
Subject: [patch 08/10] shmem: inode defragmentation support

Signed-off-by: Christoph Lameter <[email protected]>

---
mm/shmem.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)

Index: slub/mm/shmem.c
===================================================================
--- slub.orig/mm/shmem.c 2007-05-18 00:54:30.000000000 -0700
+++ slub/mm/shmem.c 2007-05-18 01:02:26.000000000 -0700
@@ -2337,11 +2337,22 @@ static void init_once(void *foo, struct
#endif
}

+static void *shmem_get_inodes(struct kmem_cache *s, int nr, void **v)
+{
+ return fs_get_inodes(s, nr, v,
+ offsetof(struct shmem_inode_info, vfs_inode));
+}
+
+static struct kmem_cache_ops shmem_kmem_cache_ops = {
+ .get = shmem_get_inodes,
+ .kick = kick_inodes
+};
+
static int init_inodecache(void)
{
shmem_inode_cachep = kmem_cache_create("shmem_inode_cache",
sizeof(struct shmem_inode_info),
- 0, 0, init_once, NULL);
+ 0, 0, init_once, &shmem_kmem_cache_ops);
if (shmem_inode_cachep == NULL)
return -ENOMEM;
return 0;

--


2007-05-18 20:39:26

by Jan Engelhardt

[permalink] [raw]
Subject: Re: [patch 08/10] shmem: inode defragmentation support


On May 18 2007 11:10, [email protected] wrote:
>
>Index: slub/mm/shmem.c
>===================================================================
>--- slub.orig/mm/shmem.c 2007-05-18 00:54:30.000000000 -0700
>+++ slub/mm/shmem.c 2007-05-18 01:02:26.000000000 -0700

Do we need *this*? (compare procfs)

I believe that shmfs's inodes remain "more" in memory than those of
procfs. That is, procfs ones can find their way out (we can regenerate
it), while shmfs/tmpfs/ramfs/etc. should not do that (we'd lose the
file).

>@@ -2337,11 +2337,22 @@ static void init_once(void *foo, struct
> #endif
> }
>
>+static void *shmem_get_inodes(struct kmem_cache *s, int nr, void **v)
>+{
>+ return fs_get_inodes(s, nr, v,
>+ offsetof(struct shmem_inode_info, vfs_inode));
>+}
>+
>+static struct kmem_cache_ops shmem_kmem_cache_ops = {
>+ .get = shmem_get_inodes,
>+ .kick = kick_inodes
>+};
>+
> static int init_inodecache(void)
> {
> shmem_inode_cachep = kmem_cache_create("shmem_inode_cache",
> sizeof(struct shmem_inode_info),
>- 0, 0, init_once, NULL);
>+ 0, 0, init_once, &shmem_kmem_cache_ops);
> if (shmem_inode_cachep == NULL)
> return -ENOMEM;
> return 0;
>
>--
>-
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to [email protected]
>More majordomo info at http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at http://www.tux.org/lkml/
>

Jan
--

2007-05-18 21:04:34

by Christoph Lameter

[permalink] [raw]
Subject: Re: [patch 08/10] shmem: inode defragmentation support

On Fri, 18 May 2007, Jan Engelhardt wrote:

> Do we need *this*? (compare procfs)
>
> I believe that shmfs's inodes remain "more" in memory than those of
> procfs. That is, procfs ones can find their way out (we can regenerate
> it), while shmfs/tmpfs/ramfs/etc. should not do that (we'd lose the
> file).

Ahh... Okay so shmem inodes are not defraggable.