From fe658b15e8afd06f70376ff5318515dc45c655a7 Mon Sep 17 00:00:00 2001 From: Hugh Dickins Date: Mon, 13 Sep 2004 17:45:23 -0700 Subject: [PATCH] [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: Hugh Dickins Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- fs/hugetlbfs/inode.c | 3 +-- include/linux/shmem_fs.h | 14 +++++++------- mm/shmem.c | 3 +-- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index 857d7bed77d24..bd00082a20964 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -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; diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h index f8efcf10a2307..b449253547a1a 100644 --- a/include/linux/shmem_fs.h +++ b/include/linux/shmem_fs.h @@ -10,14 +10,14 @@ 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; }; diff --git a/mm/shmem.c b/mm/shmem.c index 9ed4b622686af..3722aefae0244 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -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; -- 2.53.0