Commit fe658b15 authored by Hugh Dickins's avatar Hugh Dickins Committed by Linus Torvalds

[PATCH] shmem: don't SLAB_HWCACHE_ALIGN

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: default avatarHugh Dickins <hugh@veritas.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 2d656145
...@@ -800,8 +800,7 @@ static int __init init_hugetlbfs_fs(void) ...@@ -800,8 +800,7 @@ static int __init init_hugetlbfs_fs(void)
hugetlbfs_inode_cachep = kmem_cache_create("hugetlbfs_inode_cache", hugetlbfs_inode_cachep = kmem_cache_create("hugetlbfs_inode_cache",
sizeof(struct hugetlbfs_inode_info), sizeof(struct hugetlbfs_inode_info),
0, SLAB_RECLAIM_ACCOUNT, 0, 0, init_once, NULL);
init_once, NULL);
if (hugetlbfs_inode_cachep == NULL) if (hugetlbfs_inode_cachep == NULL)
return -ENOMEM; return -ENOMEM;
......
...@@ -10,14 +10,14 @@ ...@@ -10,14 +10,14 @@
struct shmem_inode_info { struct shmem_inode_info {
spinlock_t lock; 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; unsigned long flags;
struct shared_policy policy; unsigned long alloced; /* data pages alloced to file */
struct list_head list; 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; struct inode vfs_inode;
}; };
......
...@@ -1897,8 +1897,7 @@ static int init_inodecache(void) ...@@ -1897,8 +1897,7 @@ static int init_inodecache(void)
{ {
shmem_inode_cachep = kmem_cache_create("shmem_inode_cache", shmem_inode_cachep = kmem_cache_create("shmem_inode_cache",
sizeof(struct shmem_inode_info), sizeof(struct shmem_inode_info),
0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT, 0, 0, init_once, NULL);
init_once, NULL);
if (shmem_inode_cachep == NULL) if (shmem_inode_cachep == NULL)
return -ENOMEM; return -ENOMEM;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment