aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ntfs/super.c
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 /fs/ntfs/super.c
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>
Diffstat (limited to 'fs/ntfs/super.c')
-rw-r--r--fs/ntfs/super.c4
1 files changed, 2 insertions, 2 deletions
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",