]> git.hungrycats.org Git - linux/commitdiff
[PATCH] shmem: don't SLAB_HWCACHE_ALIGN
authorHugh Dickins <hugh@veritas.com>
Tue, 14 Sep 2004 00:45:23 +0000 (17:45 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Tue, 14 Sep 2004 00:45:23 +0000 (17:45 -0700)
Anton recently removed SLAB_HWCACHE_ALIGN from the fs inode caches, now do the
same for tmpfs inode cache: fits 9 per page where 7 before.

Was saying SLAB_RECLAIM_ACCOUNT too, but that's wrong: tmpfs inodes are not
reclaimed under pressure; and hugetlbfs had copied that too.

Rearrange shmem_inode_info fields so those most likely to be needed are most
likely to be in the same cacheline as the spinlock guarding them.

Signed-off-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
fs/hugetlbfs/inode.c
include/linux/shmem_fs.h
mm/shmem.c

index 857d7bed77d2453f8f2d040d7bbd3caf8d7205d5..bd00082a20964ea270ecab23365cc29082e71331 100644 (file)
@@ -800,8 +800,7 @@ static int __init init_hugetlbfs_fs(void)
 
        hugetlbfs_inode_cachep = kmem_cache_create("hugetlbfs_inode_cache",
                                        sizeof(struct hugetlbfs_inode_info),
-                                       0, SLAB_RECLAIM_ACCOUNT,
-                                       init_once, NULL);
+                                       0, 0, init_once, NULL);
        if (hugetlbfs_inode_cachep == NULL)
                return -ENOMEM;
 
index f8efcf10a2307c2d61f92e6346cf36e3ae542dd8..b449253547a1a6ef36808b05affe87327e3d955d 100644 (file)
 
 struct shmem_inode_info {
        spinlock_t              lock;
-       unsigned long           next_index;
-       swp_entry_t             i_direct[SHMEM_NR_DIRECT]; /* for the first blocks */
-       struct page            *i_indirect; /* indirect blocks */
-       unsigned long           alloced;    /* data pages allocated to file */
-       unsigned long           swapped;    /* subtotal assigned to swap */
        unsigned long           flags;
-       struct shared_policy     policy;
-       struct list_head        list;
+       unsigned long           alloced;        /* data pages alloced to file */
+       unsigned long           swapped;        /* subtotal assigned to swap */
+       unsigned long           next_index;     /* highest alloced index + 1 */
+       struct shared_policy    policy;         /* NUMA memory alloc policy */
+       struct page             *i_indirect;    /* top indirect blocks page */
+       swp_entry_t             i_direct[SHMEM_NR_DIRECT]; /* first blocks */
+       struct list_head        list;           /* chain of all shmem inodes */
        struct inode            vfs_inode;
 };
 
index 9ed4b622686afaf3797c9f60efa151c8a5b44559..3722aefae0244468284d6b46f7cccb2950d15c5c 100644 (file)
@@ -1897,8 +1897,7 @@ static int init_inodecache(void)
 {
        shmem_inode_cachep = kmem_cache_create("shmem_inode_cache",
                                sizeof(struct shmem_inode_info),
-                               0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT,
-                               init_once, NULL);
+                               0, 0, init_once, NULL);
        if (shmem_inode_cachep == NULL)
                return -ENOMEM;
        return 0;