aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Jackson <pj@sgi.com>2006-03-24 06:16:05 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-03-24 10:33:23 -0500
commit4b6a9316fab51af611dc8671f296734089f6a22a (patch)
tree078f8f0f01a206af529bef137d5b71515c39053d
parent44110fe385af23ca5eee8a6ad4ff55d50339097a (diff)
[PATCH] cpuset memory spread: slab cache filesystems
Mark file system inode and similar slab caches subject to SLAB_MEM_SPREAD memory spreading. If a slab cache is marked SLAB_MEM_SPREAD, then anytime that a task that's in a cpuset with the 'memory_spread_slab' option enabled goes to allocate from such a slab cache, the allocations are spread evenly over all the memory nodes (task->mems_allowed) allowed to that task, instead of favoring allocation on the node local to the current cpu. The following inode and similar caches are marked SLAB_MEM_SPREAD: file cache ==== ===== fs/adfs/super.c adfs_inode_cache fs/affs/super.c affs_inode_cache fs/befs/linuxvfs.c befs_inode_cache fs/bfs/inode.c bfs_inode_cache fs/block_dev.c bdev_cache fs/cifs/cifsfs.c cifs_inode_cache fs/coda/inode.c coda_inode_cache fs/dquot.c dquot fs/efs/super.c efs_inode_cache fs/ext2/super.c ext2_inode_cache fs/ext2/xattr.c (fs/mbcache.c) ext2_xattr fs/ext3/super.c ext3_inode_cache fs/ext3/xattr.c (fs/mbcache.c) ext3_xattr fs/fat/cache.c fat_cache fs/fat/inode.c fat_inode_cache fs/freevxfs/vxfs_super.c vxfs_inode fs/hpfs/super.c hpfs_inode_cache fs/isofs/inode.c isofs_inode_cache fs/jffs/inode-v23.c jffs_fm fs/jffs2/super.c jffs2_i fs/jfs/super.c jfs_ip fs/minix/inode.c minix_inode_cache fs/ncpfs/inode.c ncp_inode_cache fs/nfs/direct.c nfs_direct_cache fs/nfs/inode.c nfs_inode_cache fs/ntfs/super.c ntfs_big_inode_cache_name fs/ntfs/super.c ntfs_inode_cache fs/ocfs2/dlm/dlmfs.c dlmfs_inode_cache fs/ocfs2/super.c ocfs2_inode_cache fs/proc/inode.c proc_inode_cache fs/qnx4/inode.c qnx4_inode_cache fs/reiserfs/super.c reiser_inode_cache fs/romfs/inode.c romfs_inode_cache fs/smbfs/inode.c smb_inode_cache fs/sysv/inode.c sysv_inode_cache fs/udf/super.c udf_inode_cache fs/ufs/super.c ufs_inode_cache net/socket.c sock_inode_cache net/sunrpc/rpc_pipe.c rpc_inode_cache The choice of which slab caches to so mark was quite simple. I marked those already marked SLAB_RECLAIM_ACCOUNT, except for fs/xfs, dentry_cache, inode_cache, and buffer_head, which were marked in a previous patch. Even though SLAB_RECLAIM_ACCOUNT is for a different purpose, it marks the same potentially large file system i/o related slab caches as we need for memory spreading. Given that the rule now becomes "wherever you would have used a SLAB_RECLAIM_ACCOUNT slab cache flag before (usually the inode cache), use the SLAB_MEM_SPREAD flag too", this should be easy enough to maintain. Future file system writers will just copy one of the existing file system slab cache setups and tend to get it right without thinking. Signed-off-by: Paul Jackson <pj@sgi.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--fs/adfs/super.c2
-rw-r--r--fs/affs/super.c2
-rw-r--r--fs/befs/linuxvfs.c2
-rw-r--r--fs/bfs/inode.c2
-rw-r--r--fs/block_dev.c2
-rw-r--r--fs/cifs/cifsfs.c2
-rw-r--r--fs/coda/inode.c2
-rw-r--r--fs/dquot.c2
-rw-r--r--fs/efs/super.c2
-rw-r--r--fs/ext2/super.c2
-rw-r--r--fs/ext3/super.c2
-rw-r--r--fs/fat/cache.c2
-rw-r--r--fs/fat/inode.c2
-rw-r--r--fs/freevxfs/vxfs_super.c2
-rw-r--r--fs/hpfs/super.c2
-rw-r--r--fs/isofs/inode.c2
-rw-r--r--fs/jffs/inode-v23.c4
-rw-r--r--fs/jffs2/super.c2
-rw-r--r--fs/jfs/super.c2
-rw-r--r--fs/mbcache.c2
-rw-r--r--fs/minix/inode.c2
-rw-r--r--fs/ncpfs/inode.c2
-rw-r--r--fs/nfs/direct.c2
-rw-r--r--fs/nfs/inode.c2
-rw-r--r--fs/ntfs/super.c4
-rw-r--r--fs/ocfs2/dlm/dlmfs.c2
-rw-r--r--fs/ocfs2/super.c2
-rw-r--r--fs/proc/inode.c2
-rw-r--r--fs/qnx4/inode.c2
-rw-r--r--fs/reiserfs/super.c2
-rw-r--r--fs/romfs/inode.c2
-rw-r--r--fs/smbfs/inode.c2
-rw-r--r--fs/sysv/inode.c2
-rw-r--r--fs/udf/super.c2
-rw-r--r--fs/ufs/super.c2
-rw-r--r--net/socket.c2
-rw-r--r--net/sunrpc/rpc_pipe.c2
37 files changed, 39 insertions, 39 deletions
diff --git a/fs/adfs/super.c b/fs/adfs/super.c
index 243963228d10..80f798b7d760 100644
--- a/fs/adfs/super.c
+++ b/fs/adfs/super.c
@@ -241,7 +241,7 @@ static int init_inodecache(void)
241{ 241{
242 adfs_inode_cachep = kmem_cache_create("adfs_inode_cache", 242 adfs_inode_cachep = kmem_cache_create("adfs_inode_cache",
243 sizeof(struct adfs_inode_info), 243 sizeof(struct adfs_inode_info),
244 0, SLAB_RECLAIM_ACCOUNT, 244 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
245 init_once, NULL); 245 init_once, NULL);
246 if (adfs_inode_cachep == NULL) 246 if (adfs_inode_cachep == NULL)
247 return -ENOMEM; 247 return -ENOMEM;
diff --git a/fs/affs/super.c b/fs/affs/super.c
index aaec015a16e4..216536d77a5f 100644
--- a/fs/affs/super.c
+++ b/fs/affs/super.c
@@ -98,7 +98,7 @@ static int init_inodecache(void)
98{ 98{
99 affs_inode_cachep = kmem_cache_create("affs_inode_cache", 99 affs_inode_cachep = kmem_cache_create("affs_inode_cache",
100 sizeof(struct affs_inode_info), 100 sizeof(struct affs_inode_info),
101 0, SLAB_RECLAIM_ACCOUNT, 101 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
102 init_once, NULL); 102 init_once, NULL);
103 if (affs_inode_cachep == NULL) 103 if (affs_inode_cachep == NULL)
104 return -ENOMEM; 104 return -ENOMEM;
diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c
index dd6048ce0532..ac031686d6d7 100644
--- a/fs/befs/linuxvfs.c
+++ b/fs/befs/linuxvfs.c
@@ -427,7 +427,7 @@ befs_init_inodecache(void)
427{ 427{
428 befs_inode_cachep = kmem_cache_create("befs_inode_cache", 428 befs_inode_cachep = kmem_cache_create("befs_inode_cache",
429 sizeof (struct befs_inode_info), 429 sizeof (struct befs_inode_info),
430 0, SLAB_RECLAIM_ACCOUNT, 430 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
431 init_once, NULL); 431 init_once, NULL);
432 if (befs_inode_cachep == NULL) { 432 if (befs_inode_cachep == NULL) {
433 printk(KERN_ERR "befs_init_inodecache: " 433 printk(KERN_ERR "befs_init_inodecache: "
diff --git a/fs/bfs/inode.c b/fs/bfs/inode.c
index 3af6c73c5b5a..584a0838ac61 100644
--- a/fs/bfs/inode.c
+++ b/fs/bfs/inode.c
@@ -257,7 +257,7 @@ static int init_inodecache(void)
257{ 257{
258 bfs_inode_cachep = kmem_cache_create("bfs_inode_cache", 258 bfs_inode_cachep = kmem_cache_create("bfs_inode_cache",
259 sizeof(struct bfs_inode_info), 259 sizeof(struct bfs_inode_info),
260 0, SLAB_RECLAIM_ACCOUNT, 260 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
261 init_once, NULL); 261 init_once, NULL);
262 if (bfs_inode_cachep == NULL) 262 if (bfs_inode_cachep == NULL)
263 return -ENOMEM; 263 return -ENOMEM;
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 44d05e6e34db..80f97729e57f 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -319,7 +319,7 @@ void __init bdev_cache_init(void)
319{ 319{
320 int err; 320 int err;
321 bdev_cachep = kmem_cache_create("bdev_cache", sizeof(struct bdev_inode), 321 bdev_cachep = kmem_cache_create("bdev_cache", sizeof(struct bdev_inode),
322 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT|SLAB_PANIC, 322 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD|SLAB_PANIC,
323 init_once, NULL); 323 init_once, NULL);
324 err = register_filesystem(&bd_type); 324 err = register_filesystem(&bd_type);
325 if (err) 325 if (err)
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index 1cd044ce82a6..ba5a24b99a11 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -695,7 +695,7 @@ cifs_init_inodecache(void)
695{ 695{
696 cifs_inode_cachep = kmem_cache_create("cifs_inode_cache", 696 cifs_inode_cachep = kmem_cache_create("cifs_inode_cache",
697 sizeof (struct cifsInodeInfo), 697 sizeof (struct cifsInodeInfo),
698 0, SLAB_RECLAIM_ACCOUNT, 698 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
699 cifs_init_once, NULL); 699 cifs_init_once, NULL);
700 if (cifs_inode_cachep == NULL) 700 if (cifs_inode_cachep == NULL)
701 return -ENOMEM; 701 return -ENOMEM;
diff --git a/fs/coda/inode.c b/fs/coda/inode.c
index 7d7d52f74b28..ada1a81df6bd 100644
--- a/fs/coda/inode.c
+++ b/fs/coda/inode.c
@@ -71,7 +71,7 @@ int coda_init_inodecache(void)
71{ 71{
72 coda_inode_cachep = kmem_cache_create("coda_inode_cache", 72 coda_inode_cachep = kmem_cache_create("coda_inode_cache",
73 sizeof(struct coda_inode_info), 73 sizeof(struct coda_inode_info),
74 0, SLAB_RECLAIM_ACCOUNT, 74 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
75 init_once, NULL); 75 init_once, NULL);
76 if (coda_inode_cachep == NULL) 76 if (coda_inode_cachep == NULL)
77 return -ENOMEM; 77 return -ENOMEM;
diff --git a/fs/dquot.c b/fs/dquot.c
index acf07e581f8c..1405755b8e4d 100644
--- a/fs/dquot.c
+++ b/fs/dquot.c
@@ -1821,7 +1821,7 @@ static int __init dquot_init(void)
1821 1821
1822 dquot_cachep = kmem_cache_create("dquot", 1822 dquot_cachep = kmem_cache_create("dquot",
1823 sizeof(struct dquot), sizeof(unsigned long) * 4, 1823 sizeof(struct dquot), sizeof(unsigned long) * 4,
1824 SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT|SLAB_PANIC, 1824 SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD|SLAB_PANIC,
1825 NULL, NULL); 1825 NULL, NULL);
1826 1826
1827 order = 0; 1827 order = 0;
diff --git a/fs/efs/super.c b/fs/efs/super.c
index afc4891feb36..dff623e3ddbf 100644
--- a/fs/efs/super.c
+++ b/fs/efs/super.c
@@ -81,7 +81,7 @@ static int init_inodecache(void)
81{ 81{
82 efs_inode_cachep = kmem_cache_create("efs_inode_cache", 82 efs_inode_cachep = kmem_cache_create("efs_inode_cache",
83 sizeof(struct efs_inode_info), 83 sizeof(struct efs_inode_info),
84 0, SLAB_RECLAIM_ACCOUNT, 84 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
85 init_once, NULL); 85 init_once, NULL);
86 if (efs_inode_cachep == NULL) 86 if (efs_inode_cachep == NULL)
87 return -ENOMEM; 87 return -ENOMEM;
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 7f3899bdebab..e153f0cc240b 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -175,7 +175,7 @@ static int init_inodecache(void)
175{ 175{
176 ext2_inode_cachep = kmem_cache_create("ext2_inode_cache", 176 ext2_inode_cachep = kmem_cache_create("ext2_inode_cache",
177 sizeof(struct ext2_inode_info), 177 sizeof(struct ext2_inode_info),
178 0, SLAB_RECLAIM_ACCOUNT, 178 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
179 init_once, NULL); 179 init_once, NULL);
180 if (ext2_inode_cachep == NULL) 180 if (ext2_inode_cachep == NULL)
181 return -ENOMEM; 181 return -ENOMEM;
diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index efe5b20d7a5a..e4a0a7cbb5b2 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -481,7 +481,7 @@ static int init_inodecache(void)
481{ 481{
482 ext3_inode_cachep = kmem_cache_create("ext3_inode_cache", 482 ext3_inode_cachep = kmem_cache_create("ext3_inode_cache",
483 sizeof(struct ext3_inode_info), 483 sizeof(struct ext3_inode_info),
484 0, SLAB_RECLAIM_ACCOUNT, 484 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
485 init_once, NULL); 485 init_once, NULL);
486 if (ext3_inode_cachep == NULL) 486 if (ext3_inode_cachep == NULL)
487 return -ENOMEM; 487 return -ENOMEM;
diff --git a/fs/fat/cache.c b/fs/fat/cache.c
index 1acc941245fb..97b967b84fc6 100644
--- a/fs/fat/cache.c
+++ b/fs/fat/cache.c
@@ -49,7 +49,7 @@ int __init fat_cache_init(void)
49{ 49{
50 fat_cache_cachep = kmem_cache_create("fat_cache", 50 fat_cache_cachep = kmem_cache_create("fat_cache",
51 sizeof(struct fat_cache), 51 sizeof(struct fat_cache),
52 0, SLAB_RECLAIM_ACCOUNT, 52 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
53 init_once, NULL); 53 init_once, NULL);
54 if (fat_cache_cachep == NULL) 54 if (fat_cache_cachep == NULL)
55 return -ENOMEM; 55 return -ENOMEM;
diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index e78d7b4842cc..a75708901e73 100644
--- a/fs/fat/inode.c
+++ b/fs/fat/inode.c
@@ -518,7 +518,7 @@ static int __init fat_init_inodecache(void)
518{ 518{
519 fat_inode_cachep = kmem_cache_create("fat_inode_cache", 519 fat_inode_cachep = kmem_cache_create("fat_inode_cache",
520 sizeof(struct msdos_inode_info), 520 sizeof(struct msdos_inode_info),
521 0, SLAB_RECLAIM_ACCOUNT, 521 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
522 init_once, NULL); 522 init_once, NULL);
523 if (fat_inode_cachep == NULL) 523 if (fat_inode_cachep == NULL)
524 return -ENOMEM; 524 return -ENOMEM;
diff --git a/fs/freevxfs/vxfs_super.c b/fs/freevxfs/vxfs_super.c
index 6aa6fbe4f8ee..b44c916d24a1 100644
--- a/fs/freevxfs/vxfs_super.c
+++ b/fs/freevxfs/vxfs_super.c
@@ -260,7 +260,7 @@ vxfs_init(void)
260{ 260{
261 vxfs_inode_cachep = kmem_cache_create("vxfs_inode", 261 vxfs_inode_cachep = kmem_cache_create("vxfs_inode",
262 sizeof(struct vxfs_inode_info), 0, 262 sizeof(struct vxfs_inode_info), 0,
263 SLAB_RECLAIM_ACCOUNT, NULL, NULL); 263 SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD, NULL, NULL);
264 if (vxfs_inode_cachep) 264 if (vxfs_inode_cachep)
265 return register_filesystem(&vxfs_fs_type); 265 return register_filesystem(&vxfs_fs_type);
266 return -ENOMEM; 266 return -ENOMEM;
diff --git a/fs/hpfs/super.c b/fs/hpfs/super.c
index 9488a794076e..25fbefe4ed00 100644
--- a/fs/hpfs/super.c
+++ b/fs/hpfs/super.c
@@ -191,7 +191,7 @@ static int init_inodecache(void)
191{ 191{
192 hpfs_inode_cachep = kmem_cache_create("hpfs_inode_cache", 192 hpfs_inode_cachep = kmem_cache_create("hpfs_inode_cache",
193 sizeof(struct hpfs_inode_info), 193 sizeof(struct hpfs_inode_info),
194 0, SLAB_RECLAIM_ACCOUNT, 194 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
195 init_once, NULL); 195 init_once, NULL);
196 if (hpfs_inode_cachep == NULL) 196 if (hpfs_inode_cachep == NULL)
197 return -ENOMEM; 197 return -ENOMEM;
diff --git a/fs/isofs/inode.c b/fs/isofs/inode.c
index 298f08be22d4..fcb68151ad86 100644
--- a/fs/isofs/inode.c
+++ b/fs/isofs/inode.c
@@ -87,7 +87,7 @@ static int init_inodecache(void)
87{ 87{
88 isofs_inode_cachep = kmem_cache_create("isofs_inode_cache", 88 isofs_inode_cachep = kmem_cache_create("isofs_inode_cache",
89 sizeof(struct iso_inode_info), 89 sizeof(struct iso_inode_info),
90 0, SLAB_RECLAIM_ACCOUNT, 90 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
91 init_once, NULL); 91 init_once, NULL);
92 if (isofs_inode_cachep == NULL) 92 if (isofs_inode_cachep == NULL)
93 return -ENOMEM; 93 return -ENOMEM;
diff --git a/fs/jffs/inode-v23.c b/fs/jffs/inode-v23.c
index 890d7ff7456d..ffa49861d985 100644
--- a/fs/jffs/inode-v23.c
+++ b/fs/jffs/inode-v23.c
@@ -1812,14 +1812,14 @@ init_jffs_fs(void)
1812 } 1812 }
1813#endif 1813#endif
1814 fm_cache = kmem_cache_create("jffs_fm", sizeof(struct jffs_fm), 1814 fm_cache = kmem_cache_create("jffs_fm", sizeof(struct jffs_fm),
1815 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT, 1815 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
1816 NULL, NULL); 1816 NULL, NULL);
1817 if (!fm_cache) { 1817 if (!fm_cache) {
1818 return -ENOMEM; 1818 return -ENOMEM;
1819 } 1819 }
1820 1820
1821 node_cache = kmem_cache_create("jffs_node",sizeof(struct jffs_node), 1821 node_cache = kmem_cache_create("jffs_node",sizeof(struct jffs_node),
1822 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT, 1822 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
1823 NULL, NULL); 1823 NULL, NULL);
1824 if (!node_cache) { 1824 if (!node_cache) {
1825 kmem_cache_destroy(fm_cache); 1825 kmem_cache_destroy(fm_cache);
diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c
index c8fac352a4cf..f2563389581c 100644
--- a/fs/jffs2/super.c
+++ b/fs/jffs2/super.c
@@ -331,7 +331,7 @@ static int __init init_jffs2_fs(void)
331 331
332 jffs2_inode_cachep = kmem_cache_create("jffs2_i", 332 jffs2_inode_cachep = kmem_cache_create("jffs2_i",
333 sizeof(struct jffs2_inode_info), 333 sizeof(struct jffs2_inode_info),
334 0, SLAB_RECLAIM_ACCOUNT, 334 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
335 jffs2_i_init_once, NULL); 335 jffs2_i_init_once, NULL);
336 if (!jffs2_inode_cachep) { 336 if (!jffs2_inode_cachep) {
337 printk(KERN_ERR "JFFS2 error: Failed to initialise inode cache\n"); 337 printk(KERN_ERR "JFFS2 error: Failed to initialise inode cache\n");
diff --git a/fs/jfs/super.c b/fs/jfs/super.c
index 18f69e6aa719..4ac40bfdbd84 100644
--- a/fs/jfs/super.c
+++ b/fs/jfs/super.c
@@ -664,7 +664,7 @@ static int __init init_jfs_fs(void)
664 664
665 jfs_inode_cachep = 665 jfs_inode_cachep =
666 kmem_cache_create("jfs_ip", sizeof(struct jfs_inode_info), 0, 666 kmem_cache_create("jfs_ip", sizeof(struct jfs_inode_info), 0,
667 SLAB_RECLAIM_ACCOUNT, init_once, NULL); 667 SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD, init_once, NULL);
668 if (jfs_inode_cachep == NULL) 668 if (jfs_inode_cachep == NULL)
669 return -ENOMEM; 669 return -ENOMEM;
670 670
diff --git a/fs/mbcache.c b/fs/mbcache.c
index f5bbe4c97c58..73e754fea2d8 100644
--- a/fs/mbcache.c
+++ b/fs/mbcache.c
@@ -288,7 +288,7 @@ mb_cache_create(const char *name, struct mb_cache_op *cache_op,
288 INIT_LIST_HEAD(&cache->c_indexes_hash[m][n]); 288 INIT_LIST_HEAD(&cache->c_indexes_hash[m][n]);
289 } 289 }
290 cache->c_entry_cache = kmem_cache_create(name, entry_size, 0, 290 cache->c_entry_cache = kmem_cache_create(name, entry_size, 0,
291 SLAB_RECLAIM_ACCOUNT, NULL, NULL); 291 SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD, NULL, NULL);
292 if (!cache->c_entry_cache) 292 if (!cache->c_entry_cache)
293 goto fail; 293 goto fail;
294 294
diff --git a/fs/minix/inode.c b/fs/minix/inode.c
index 790cc0d0e970..4fabef0b6519 100644
--- a/fs/minix/inode.c
+++ b/fs/minix/inode.c
@@ -80,7 +80,7 @@ static int init_inodecache(void)
80{ 80{
81 minix_inode_cachep = kmem_cache_create("minix_inode_cache", 81 minix_inode_cachep = kmem_cache_create("minix_inode_cache",
82 sizeof(struct minix_inode_info), 82 sizeof(struct minix_inode_info),
83 0, SLAB_RECLAIM_ACCOUNT, 83 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
84 init_once, NULL); 84 init_once, NULL);
85 if (minix_inode_cachep == NULL) 85 if (minix_inode_cachep == NULL)
86 return -ENOMEM; 86 return -ENOMEM;
diff --git a/fs/ncpfs/inode.c b/fs/ncpfs/inode.c
index 0b521d3d97ce..2547ebaa6547 100644
--- a/fs/ncpfs/inode.c
+++ b/fs/ncpfs/inode.c
@@ -72,7 +72,7 @@ static int init_inodecache(void)
72{ 72{
73 ncp_inode_cachep = kmem_cache_create("ncp_inode_cache", 73 ncp_inode_cachep = kmem_cache_create("ncp_inode_cache",
74 sizeof(struct ncp_inode_info), 74 sizeof(struct ncp_inode_info),
75 0, SLAB_RECLAIM_ACCOUNT, 75 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
76 init_once, NULL); 76 init_once, NULL);
77 if (ncp_inode_cachep == NULL) 77 if (ncp_inode_cachep == NULL)
78 return -ENOMEM; 78 return -ENOMEM;
diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
index 4e9b3a1b36c5..751f5b5e7e07 100644
--- a/fs/nfs/direct.c
+++ b/fs/nfs/direct.c
@@ -781,7 +781,7 @@ int nfs_init_directcache(void)
781{ 781{
782 nfs_direct_cachep = kmem_cache_create("nfs_direct_cache", 782 nfs_direct_cachep = kmem_cache_create("nfs_direct_cache",
783 sizeof(struct nfs_direct_req), 783 sizeof(struct nfs_direct_req),
784 0, SLAB_RECLAIM_ACCOUNT, 784 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
785 NULL, NULL); 785 NULL, NULL);
786 if (nfs_direct_cachep == NULL) 786 if (nfs_direct_cachep == NULL)
787 return -ENOMEM; 787 return -ENOMEM;
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
index 419d1d254f9f..834c1e905ce1 100644
--- a/fs/nfs/inode.c
+++ b/fs/nfs/inode.c
@@ -2163,7 +2163,7 @@ static int nfs_init_inodecache(void)
2163{ 2163{
2164 nfs_inode_cachep = kmem_cache_create("nfs_inode_cache", 2164 nfs_inode_cachep = kmem_cache_create("nfs_inode_cache",
2165 sizeof(struct nfs_inode), 2165 sizeof(struct nfs_inode),
2166 0, SLAB_RECLAIM_ACCOUNT, 2166 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
2167 init_once, NULL); 2167 init_once, NULL);
2168 if (nfs_inode_cachep == NULL) 2168 if (nfs_inode_cachep == NULL)
2169 return -ENOMEM; 2169 return -ENOMEM;
diff --git a/fs/ntfs/super.c b/fs/ntfs/super.c
index 7646b5059389..27833f6df49f 100644
--- a/fs/ntfs/super.c
+++ b/fs/ntfs/super.c
@@ -3163,7 +3163,7 @@ static int __init init_ntfs_fs(void)
3163 3163
3164 ntfs_inode_cache = kmem_cache_create(ntfs_inode_cache_name, 3164 ntfs_inode_cache = kmem_cache_create(ntfs_inode_cache_name,
3165 sizeof(ntfs_inode), 0, 3165 sizeof(ntfs_inode), 0,
3166 SLAB_RECLAIM_ACCOUNT, NULL, NULL); 3166 SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD, NULL, NULL);
3167 if (!ntfs_inode_cache) { 3167 if (!ntfs_inode_cache) {
3168 printk(KERN_CRIT "NTFS: Failed to create %s!\n", 3168 printk(KERN_CRIT "NTFS: Failed to create %s!\n",
3169 ntfs_inode_cache_name); 3169 ntfs_inode_cache_name);
@@ -3172,7 +3172,7 @@ static int __init init_ntfs_fs(void)
3172 3172
3173 ntfs_big_inode_cache = kmem_cache_create(ntfs_big_inode_cache_name, 3173 ntfs_big_inode_cache = kmem_cache_create(ntfs_big_inode_cache_name,
3174 sizeof(big_ntfs_inode), 0, 3174 sizeof(big_ntfs_inode), 0,
3175 SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT, 3175 SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
3176 ntfs_big_inode_init_once, NULL); 3176 ntfs_big_inode_init_once, NULL);
3177 if (!ntfs_big_inode_cache) { 3177 if (!ntfs_big_inode_cache) {
3178 printk(KERN_CRIT "NTFS: Failed to create %s!\n", 3178 printk(KERN_CRIT "NTFS: Failed to create %s!\n",
diff --git a/fs/ocfs2/dlm/dlmfs.c b/fs/ocfs2/dlm/dlmfs.c
index dd2d24dc25e0..ca8587cc58bc 100644
--- a/fs/ocfs2/dlm/dlmfs.c
+++ b/fs/ocfs2/dlm/dlmfs.c
@@ -596,7 +596,7 @@ static int __init init_dlmfs_fs(void)
596 596
597 dlmfs_inode_cache = kmem_cache_create("dlmfs_inode_cache", 597 dlmfs_inode_cache = kmem_cache_create("dlmfs_inode_cache",
598 sizeof(struct dlmfs_inode_private), 598 sizeof(struct dlmfs_inode_private),
599 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT, 599 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
600 dlmfs_init_once, NULL); 600 dlmfs_init_once, NULL);
601 if (!dlmfs_inode_cache) 601 if (!dlmfs_inode_cache)
602 return -ENOMEM; 602 return -ENOMEM;
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
index 09e1c57a86a0..3fe7896c666a 100644
--- a/fs/ocfs2/super.c
+++ b/fs/ocfs2/super.c
@@ -951,7 +951,7 @@ static int ocfs2_initialize_mem_caches(void)
951{ 951{
952 ocfs2_inode_cachep = kmem_cache_create("ocfs2_inode_cache", 952 ocfs2_inode_cachep = kmem_cache_create("ocfs2_inode_cache",
953 sizeof(struct ocfs2_inode_info), 953 sizeof(struct ocfs2_inode_info),
954 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT, 954 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
955 ocfs2_inode_init_once, NULL); 955 ocfs2_inode_init_once, NULL);
956 if (!ocfs2_inode_cachep) 956 if (!ocfs2_inode_cachep)
957 return -ENOMEM; 957 return -ENOMEM;
diff --git a/fs/proc/inode.c b/fs/proc/inode.c
index 075d3e945602..5ac781801ae7 100644
--- a/fs/proc/inode.c
+++ b/fs/proc/inode.c
@@ -121,7 +121,7 @@ int __init proc_init_inodecache(void)
121{ 121{
122 proc_inode_cachep = kmem_cache_create("proc_inode_cache", 122 proc_inode_cachep = kmem_cache_create("proc_inode_cache",
123 sizeof(struct proc_inode), 123 sizeof(struct proc_inode),
124 0, SLAB_RECLAIM_ACCOUNT, 124 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
125 init_once, NULL); 125 init_once, NULL);
126 if (proc_inode_cachep == NULL) 126 if (proc_inode_cachep == NULL)
127 return -ENOMEM; 127 return -ENOMEM;
diff --git a/fs/qnx4/inode.c b/fs/qnx4/inode.c
index 80f32911c0cb..463142c80ae8 100644
--- a/fs/qnx4/inode.c
+++ b/fs/qnx4/inode.c
@@ -546,7 +546,7 @@ static int init_inodecache(void)
546{ 546{
547 qnx4_inode_cachep = kmem_cache_create("qnx4_inode_cache", 547 qnx4_inode_cachep = kmem_cache_create("qnx4_inode_cache",
548 sizeof(struct qnx4_inode_info), 548 sizeof(struct qnx4_inode_info),
549 0, SLAB_RECLAIM_ACCOUNT, 549 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
550 init_once, NULL); 550 init_once, NULL);
551 if (qnx4_inode_cachep == NULL) 551 if (qnx4_inode_cachep == NULL)
552 return -ENOMEM; 552 return -ENOMEM;
diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
index d63da756eb49..bf4346057879 100644
--- a/fs/reiserfs/super.c
+++ b/fs/reiserfs/super.c
@@ -521,7 +521,7 @@ static int init_inodecache(void)
521 reiserfs_inode_cachep = kmem_cache_create("reiser_inode_cache", 521 reiserfs_inode_cachep = kmem_cache_create("reiser_inode_cache",
522 sizeof(struct 522 sizeof(struct
523 reiserfs_inode_info), 523 reiserfs_inode_info),
524 0, SLAB_RECLAIM_ACCOUNT, 524 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
525 init_once, NULL); 525 init_once, NULL);
526 if (reiserfs_inode_cachep == NULL) 526 if (reiserfs_inode_cachep == NULL)
527 return -ENOMEM; 527 return -ENOMEM;
diff --git a/fs/romfs/inode.c b/fs/romfs/inode.c
index 0a13859fd57b..223bebb8b45e 100644
--- a/fs/romfs/inode.c
+++ b/fs/romfs/inode.c
@@ -579,7 +579,7 @@ static int init_inodecache(void)
579{ 579{
580 romfs_inode_cachep = kmem_cache_create("romfs_inode_cache", 580 romfs_inode_cachep = kmem_cache_create("romfs_inode_cache",
581 sizeof(struct romfs_inode_info), 581 sizeof(struct romfs_inode_info),
582 0, SLAB_RECLAIM_ACCOUNT, 582 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
583 init_once, NULL); 583 init_once, NULL);
584 if (romfs_inode_cachep == NULL) 584 if (romfs_inode_cachep == NULL)
585 return -ENOMEM; 585 return -ENOMEM;
diff --git a/fs/smbfs/inode.c b/fs/smbfs/inode.c
index 02e3e82d465c..9b14542cc186 100644
--- a/fs/smbfs/inode.c
+++ b/fs/smbfs/inode.c
@@ -80,7 +80,7 @@ static int init_inodecache(void)
80{ 80{
81 smb_inode_cachep = kmem_cache_create("smb_inode_cache", 81 smb_inode_cachep = kmem_cache_create("smb_inode_cache",
82 sizeof(struct smb_inode_info), 82 sizeof(struct smb_inode_info),
83 0, SLAB_RECLAIM_ACCOUNT, 83 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
84 init_once, NULL); 84 init_once, NULL);
85 if (smb_inode_cachep == NULL) 85 if (smb_inode_cachep == NULL)
86 return -ENOMEM; 86 return -ENOMEM;
diff --git a/fs/sysv/inode.c b/fs/sysv/inode.c
index fa33eceb0011..3ff89cc5833a 100644
--- a/fs/sysv/inode.c
+++ b/fs/sysv/inode.c
@@ -342,7 +342,7 @@ int __init sysv_init_icache(void)
342{ 342{
343 sysv_inode_cachep = kmem_cache_create("sysv_inode_cache", 343 sysv_inode_cachep = kmem_cache_create("sysv_inode_cache",
344 sizeof(struct sysv_inode_info), 0, 344 sizeof(struct sysv_inode_info), 0,
345 SLAB_RECLAIM_ACCOUNT, 345 SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
346 init_once, NULL); 346 init_once, NULL);
347 if (!sysv_inode_cachep) 347 if (!sysv_inode_cachep)
348 return -ENOMEM; 348 return -ENOMEM;
diff --git a/fs/udf/super.c b/fs/udf/super.c
index 0d555616c939..e120f33f8473 100644
--- a/fs/udf/super.c
+++ b/fs/udf/super.c
@@ -140,7 +140,7 @@ static int init_inodecache(void)
140{ 140{
141 udf_inode_cachep = kmem_cache_create("udf_inode_cache", 141 udf_inode_cachep = kmem_cache_create("udf_inode_cache",
142 sizeof(struct udf_inode_info), 142 sizeof(struct udf_inode_info),
143 0, SLAB_RECLAIM_ACCOUNT, 143 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
144 init_once, NULL); 144 init_once, NULL);
145 if (udf_inode_cachep == NULL) 145 if (udf_inode_cachep == NULL)
146 return -ENOMEM; 146 return -ENOMEM;
diff --git a/fs/ufs/super.c b/fs/ufs/super.c
index e9055ef7f5ac..684018d3c58e 100644
--- a/fs/ufs/super.c
+++ b/fs/ufs/super.c
@@ -1184,7 +1184,7 @@ static int init_inodecache(void)
1184{ 1184{
1185 ufs_inode_cachep = kmem_cache_create("ufs_inode_cache", 1185 ufs_inode_cachep = kmem_cache_create("ufs_inode_cache",
1186 sizeof(struct ufs_inode_info), 1186 sizeof(struct ufs_inode_info),
1187 0, SLAB_RECLAIM_ACCOUNT, 1187 0, SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
1188 init_once, NULL); 1188 init_once, NULL);
1189 if (ufs_inode_cachep == NULL) 1189 if (ufs_inode_cachep == NULL)
1190 return -ENOMEM; 1190 return -ENOMEM;
diff --git a/net/socket.c b/net/socket.c
index e2d5bae994de..7a5a56874efa 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -319,7 +319,7 @@ static int init_inodecache(void)
319{ 319{
320 sock_inode_cachep = kmem_cache_create("sock_inode_cache", 320 sock_inode_cachep = kmem_cache_create("sock_inode_cache",
321 sizeof(struct socket_alloc), 321 sizeof(struct socket_alloc),
322 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT, 322 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
323 init_once, NULL); 323 init_once, NULL);
324 if (sock_inode_cachep == NULL) 324 if (sock_inode_cachep == NULL)
325 return -ENOMEM; 325 return -ENOMEM;
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c
index a5c0c7b6e151..befc0c5ca9e5 100644
--- a/net/sunrpc/rpc_pipe.c
+++ b/net/sunrpc/rpc_pipe.c
@@ -850,7 +850,7 @@ int register_rpc_pipefs(void)
850{ 850{
851 rpc_inode_cachep = kmem_cache_create("rpc_inode_cache", 851 rpc_inode_cachep = kmem_cache_create("rpc_inode_cache",
852 sizeof(struct rpc_inode), 852 sizeof(struct rpc_inode),
853 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT, 853 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD,
854 init_once, NULL); 854 init_once, NULL);
855 if (!rpc_inode_cachep) 855 if (!rpc_inode_cachep)
856 return -ENOMEM; 856 return -ENOMEM;