The patch titled SL*B: drop kmem cache argument from constructor has been added to the -mm tree. Its filename is slb-drop-kmem-cache-argument-from-constructor.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: SL*B: drop kmem cache argument from constructor From: Alexey Dobriyan <adobriyan@xxxxxxxxx> Kmem cache passed to constructor is only needed for constructors that are themselves multiplexeres. Nobody uses this "feature", nor does anybody uses passed kmem cache in non-trivial way, so pass only pointer to object. Non-trivial places are: arch/powerpc/mm/init_64.c arch/powerpc/mm/hugetlbpage.c This is flag day, yes. Signed-off-by: Alexey Dobriyan <adobriyan@xxxxxxxxx> Acked-by: Pekka Enberg <penberg@xxxxxxxxxxxxxx> Acked-by: Christoph Lameter <cl@xxxxxxxxxxxxxxxxxxxx> Cc: Jon Tollefson <kniht@xxxxxxxxxxxxxxxxxx> Cc: Nick Piggin <nickpiggin@xxxxxxxxxxxx> Cc: Matt Mackall <mpm@xxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- arch/arm/plat-s3c24xx/dma.c | 2 - arch/powerpc/kernel/rtas_flash.c | 2 - arch/powerpc/mm/hugetlbpage.c | 4 +-- arch/powerpc/mm/init_64.c | 24 +++++++------------- arch/powerpc/platforms/cell/spufs/inode.c | 2 - arch/sh/mm/pmb.c | 2 - arch/xtensa/mm/init.c | 2 - drivers/usb/mon/mon_text.c | 4 +-- fs/adfs/super.c | 2 - fs/affs/super.c | 2 - fs/afs/super.c | 4 +-- fs/befs/linuxvfs.c | 2 - fs/bfs/inode.c | 2 - fs/block_dev.c | 2 - fs/buffer.c | 2 - fs/cifs/cifsfs.c | 2 - fs/coda/inode.c | 2 - fs/ecryptfs/main.c | 4 +-- fs/efs/super.c | 2 - fs/ext2/super.c | 2 - fs/ext3/super.c | 2 - fs/ext4/super.c | 2 - fs/fat/cache.c | 2 - fs/fat/inode.c | 2 - fs/fuse/inode.c | 2 - fs/gfs2/main.c | 4 +-- fs/hfs/super.c | 2 - fs/hfsplus/super.c | 2 - fs/hpfs/super.c | 2 - fs/hugetlbfs/inode.c | 2 - fs/inode.c | 2 - fs/isofs/inode.c | 2 - fs/jffs2/super.c | 2 - fs/jfs/jfs_metapage.c | 2 - fs/jfs/super.c | 2 - fs/locks.c | 2 - fs/minix/inode.c | 2 - fs/ncpfs/inode.c | 2 - fs/nfs/inode.c | 2 - fs/ntfs/super.c | 2 - fs/ocfs2/dlm/dlmfs.c | 3 -- fs/ocfs2/super.c | 2 - fs/openpromfs/inode.c | 2 - fs/proc/inode.c | 2 - fs/qnx4/inode.c | 2 - fs/reiserfs/super.c | 2 - fs/romfs/inode.c | 2 - fs/smbfs/inode.c | 2 - fs/sysv/inode.c | 2 - fs/udf/super.c | 2 - fs/ufs/super.c | 2 - fs/xfs/linux-2.6/kmem.h | 2 - fs/xfs/linux-2.6/xfs_super.c | 1 include/linux/slab.h | 2 - include/linux/slab_def.h | 2 - include/linux/slub_def.h | 2 - ipc/mqueue.c | 2 - kernel/fork.c | 2 - lib/idr.c | 2 - lib/radix-tree.c | 2 - mm/rmap.c | 2 - mm/shmem.c | 2 - mm/slab.c | 5 +--- mm/slob.c | 7 ++--- mm/slub.c | 13 +++++----- net/socket.c | 2 - net/sunrpc/rpc_pipe.c | 2 - 67 files changed, 87 insertions(+), 98 deletions(-) diff -puN arch/arm/plat-s3c24xx/dma.c~slb-drop-kmem-cache-argument-from-constructor arch/arm/plat-s3c24xx/dma.c --- a/arch/arm/plat-s3c24xx/dma.c~slb-drop-kmem-cache-argument-from-constructor +++ a/arch/arm/plat-s3c24xx/dma.c @@ -1304,7 +1304,7 @@ struct sysdev_class dma_sysclass = { /* kmem cache implementation */ -static void s3c2410_dma_cache_ctor(struct kmem_cache *c, void *p) +static void s3c2410_dma_cache_ctor(void *p) { memset(p, 0, sizeof(struct s3c2410_dma_buf)); } diff -puN arch/powerpc/kernel/rtas_flash.c~slb-drop-kmem-cache-argument-from-constructor arch/powerpc/kernel/rtas_flash.c --- a/arch/powerpc/kernel/rtas_flash.c~slb-drop-kmem-cache-argument-from-constructor +++ a/arch/powerpc/kernel/rtas_flash.c @@ -286,7 +286,7 @@ static ssize_t rtas_flash_read(struct fi } /* constructor for flash_block_cache */ -void rtas_block_ctor(struct kmem_cache *cache, void *ptr) +void rtas_block_ctor(void *ptr) { memset(ptr, 0, RTAS_BLK_SIZE); } diff -puN arch/powerpc/mm/hugetlbpage.c~slb-drop-kmem-cache-argument-from-constructor arch/powerpc/mm/hugetlbpage.c --- a/arch/powerpc/mm/hugetlbpage.c~slb-drop-kmem-cache-argument-from-constructor +++ a/arch/powerpc/mm/hugetlbpage.c @@ -730,9 +730,9 @@ static int __init hugepage_setup_sz(char } __setup("hugepagesz=", hugepage_setup_sz); -static void zero_ctor(struct kmem_cache *cache, void *addr) +static void zero_ctor(void *addr) { - memset(addr, 0, kmem_cache_size(cache)); + memset(addr, 0, HUGEPTE_TABLE_SIZE); } static int __init hugetlbpage_init(void) diff -puN arch/powerpc/mm/init_64.c~slb-drop-kmem-cache-argument-from-constructor arch/powerpc/mm/init_64.c --- a/arch/powerpc/mm/init_64.c~slb-drop-kmem-cache-argument-from-constructor +++ a/arch/powerpc/mm/init_64.c @@ -136,9 +136,14 @@ static int __init setup_kcore(void) module_init(setup_kcore); #endif -static void zero_ctor(struct kmem_cache *cache, void *addr) +static void pgd_ctor(void *addr) { - memset(addr, 0, kmem_cache_size(cache)); + memset(addr, 0, PGD_TABLE_SIZE); +} + +static void pmd_ctor(void *addr) +{ + memset(addr, 0, PMD_TABLE_SIZE); } static const unsigned int pgtable_cache_size[2] = { @@ -163,19 +168,8 @@ struct kmem_cache *pgtable_cache[ARRAY_S void pgtable_cache_init(void) { - int i; - - for (i = 0; i < ARRAY_SIZE(pgtable_cache_size); i++) { - int size = pgtable_cache_size[i]; - const char *name = pgtable_cache_name[i]; - - pr_debug("Allocating page table cache %s (#%d) " - "for size: %08x...\n", name, i, size); - pgtable_cache[i] = kmem_cache_create(name, - size, size, - SLAB_PANIC, - zero_ctor); - } + pgtable_cache[0] = kmem_cache_create(pgtable_cache_name[0], PGD_TABLE_SIZE, PGD_TABLE_SIZE, SLAB_PANIC, pgd_ctor); + pgtable_cache[1] = kmem_cache_create(pgtable_cache_name[1], PMD_TABLE_SIZE, PMD_TABLE_SIZE, SLAB_PANIC, pmd_ctor); } #ifdef CONFIG_SPARSEMEM_VMEMMAP diff -puN arch/powerpc/platforms/cell/spufs/inode.c~slb-drop-kmem-cache-argument-from-constructor arch/powerpc/platforms/cell/spufs/inode.c --- a/arch/powerpc/platforms/cell/spufs/inode.c~slb-drop-kmem-cache-argument-from-constructor +++ a/arch/powerpc/platforms/cell/spufs/inode.c @@ -69,7 +69,7 @@ spufs_destroy_inode(struct inode *inode) } static void -spufs_init_once(struct kmem_cache *cachep, void *p) +spufs_init_once(void *p) { struct spufs_inode_info *ei = p; diff -puN arch/sh/mm/pmb.c~slb-drop-kmem-cache-argument-from-constructor arch/sh/mm/pmb.c --- a/arch/sh/mm/pmb.c~slb-drop-kmem-cache-argument-from-constructor +++ a/arch/sh/mm/pmb.c @@ -293,7 +293,7 @@ void pmb_unmap(unsigned long addr) } while (pmbe); } -static void pmb_cache_ctor(struct kmem_cache *cachep, void *pmb) +static void pmb_cache_ctor(void *pmb) { struct pmb_entry *pmbe = pmb; diff -puN arch/xtensa/mm/init.c~slb-drop-kmem-cache-argument-from-constructor arch/xtensa/mm/init.c --- a/arch/xtensa/mm/init.c~slb-drop-kmem-cache-argument-from-constructor +++ a/arch/xtensa/mm/init.c @@ -300,7 +300,7 @@ void show_mem(void) struct kmem_cache *pgtable_cache __read_mostly; -static void pgd_ctor(struct kmem_cache *cache, void* addr) +static void pgd_ctor(void* addr) { pte_t* ptep = (pte_t*)addr; int i; diff -puN drivers/usb/mon/mon_text.c~slb-drop-kmem-cache-argument-from-constructor drivers/usb/mon/mon_text.c --- a/drivers/usb/mon/mon_text.c~slb-drop-kmem-cache-argument-from-constructor +++ a/drivers/usb/mon/mon_text.c @@ -87,7 +87,7 @@ struct mon_reader_text { static struct dentry *mon_dir; /* Usually /sys/kernel/debug/usbmon */ -static void mon_text_ctor(struct kmem_cache *, void *); +static void mon_text_ctor(void *); struct mon_text_ptr { int cnt, limit; @@ -720,7 +720,7 @@ void mon_text_del(struct mon_bus *mbus) /* * Slab interface: constructor. */ -static void mon_text_ctor(struct kmem_cache *slab, void *mem) +static void mon_text_ctor(void *mem) { /* * Nothing to initialize. No, really! diff -puN fs/adfs/super.c~slb-drop-kmem-cache-argument-from-constructor fs/adfs/super.c --- a/fs/adfs/super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/adfs/super.c @@ -249,7 +249,7 @@ static void adfs_destroy_inode(struct in kmem_cache_free(adfs_inode_cachep, ADFS_I(inode)); } -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct adfs_inode_info *ei = (struct adfs_inode_info *) foo; diff -puN fs/affs/super.c~slb-drop-kmem-cache-argument-from-constructor fs/affs/super.c --- a/fs/affs/super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/affs/super.c @@ -90,7 +90,7 @@ static void affs_destroy_inode(struct in kmem_cache_free(affs_inode_cachep, AFFS_I(inode)); } -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct affs_inode_info *ei = (struct affs_inode_info *) foo; diff -puN fs/afs/super.c~slb-drop-kmem-cache-argument-from-constructor fs/afs/super.c --- a/fs/afs/super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/afs/super.c @@ -27,7 +27,7 @@ #define AFS_FS_MAGIC 0x6B414653 /* 'kAFS' */ -static void afs_i_init_once(struct kmem_cache *cachep, void *foo); +static void afs_i_init_once(void *foo); static int afs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data, struct vfsmount *mnt); @@ -449,7 +449,7 @@ static void afs_put_super(struct super_b /* * initialise an inode cache slab element prior to any use */ -static void afs_i_init_once(struct kmem_cache *cachep, void *_vnode) +static void afs_i_init_once(void *_vnode) { struct afs_vnode *vnode = _vnode; diff -puN fs/befs/linuxvfs.c~slb-drop-kmem-cache-argument-from-constructor fs/befs/linuxvfs.c --- a/fs/befs/linuxvfs.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/befs/linuxvfs.c @@ -289,7 +289,7 @@ befs_destroy_inode(struct inode *inode) kmem_cache_free(befs_inode_cachep, BEFS_I(inode)); } -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct befs_inode_info *bi = (struct befs_inode_info *) foo; diff -puN fs/bfs/inode.c~slb-drop-kmem-cache-argument-from-constructor fs/bfs/inode.c --- a/fs/bfs/inode.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/bfs/inode.c @@ -264,7 +264,7 @@ static void bfs_destroy_inode(struct ino kmem_cache_free(bfs_inode_cachep, BFS_I(inode)); } -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct bfs_inode_info *bi = foo; diff -puN fs/block_dev.c~slb-drop-kmem-cache-argument-from-constructor fs/block_dev.c --- a/fs/block_dev.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/block_dev.c @@ -271,7 +271,7 @@ static void bdev_destroy_inode(struct in kmem_cache_free(bdev_cachep, bdi); } -static void init_once(struct kmem_cache * cachep, void *foo) +static void init_once(void *foo) { struct bdev_inode *ei = (struct bdev_inode *) foo; struct block_device *bdev = &ei->bdev; diff -puN fs/buffer.c~slb-drop-kmem-cache-argument-from-constructor fs/buffer.c --- a/fs/buffer.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/buffer.c @@ -3303,7 +3303,7 @@ int bh_submit_read(struct buffer_head *b EXPORT_SYMBOL(bh_submit_read); static void -init_buffer_head(struct kmem_cache *cachep, void *data) +init_buffer_head(void *data) { struct buffer_head *bh = data; diff -puN fs/cifs/cifsfs.c~slb-drop-kmem-cache-argument-from-constructor fs/cifs/cifsfs.c --- a/fs/cifs/cifsfs.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/cifs/cifsfs.c @@ -793,7 +793,7 @@ const struct file_operations cifs_dir_op }; static void -cifs_init_once(struct kmem_cache *cachep, void *inode) +cifs_init_once(void *inode) { struct cifsInodeInfo *cifsi = inode; diff -puN fs/coda/inode.c~slb-drop-kmem-cache-argument-from-constructor fs/coda/inode.c --- a/fs/coda/inode.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/coda/inode.c @@ -58,7 +58,7 @@ static void coda_destroy_inode(struct in kmem_cache_free(coda_inode_cachep, ITOC(inode)); } -static void init_once(struct kmem_cache * cachep, void *foo) +static void init_once(void *foo) { struct coda_inode_info *ei = (struct coda_inode_info *) foo; diff -puN fs/ecryptfs/main.c~slb-drop-kmem-cache-argument-from-constructor fs/ecryptfs/main.c --- a/fs/ecryptfs/main.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/ecryptfs/main.c @@ -594,7 +594,7 @@ static struct file_system_type ecryptfs_ * Initializes the ecryptfs_inode_info_cache when it is created */ static void -inode_info_init_once(struct kmem_cache *cachep, void *vptr) +inode_info_init_once(void *vptr) { struct ecryptfs_inode_info *ei = (struct ecryptfs_inode_info *)vptr; @@ -605,7 +605,7 @@ static struct ecryptfs_cache_info { struct kmem_cache **cache; const char *name; size_t size; - void (*ctor)(struct kmem_cache *cache, void *obj); + void (*ctor)(void *obj); } ecryptfs_cache_infos[] = { { .cache = &ecryptfs_auth_tok_list_item_cache, diff -puN fs/efs/super.c~slb-drop-kmem-cache-argument-from-constructor fs/efs/super.c --- a/fs/efs/super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/efs/super.c @@ -70,7 +70,7 @@ static void efs_destroy_inode(struct ino kmem_cache_free(efs_inode_cachep, INODE_INFO(inode)); } -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct efs_inode_info *ei = (struct efs_inode_info *) foo; diff -puN fs/ext2/super.c~slb-drop-kmem-cache-argument-from-constructor fs/ext2/super.c --- a/fs/ext2/super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/ext2/super.c @@ -159,7 +159,7 @@ static void ext2_destroy_inode(struct in kmem_cache_free(ext2_inode_cachep, EXT2_I(inode)); } -static void init_once(struct kmem_cache * cachep, void *foo) +static void init_once(void *foo) { struct ext2_inode_info *ei = (struct ext2_inode_info *) foo; diff -puN fs/ext3/super.c~slb-drop-kmem-cache-argument-from-constructor fs/ext3/super.c --- a/fs/ext3/super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/ext3/super.c @@ -472,7 +472,7 @@ static void ext3_destroy_inode(struct in kmem_cache_free(ext3_inode_cachep, EXT3_I(inode)); } -static void init_once(struct kmem_cache * cachep, void *foo) +static void init_once(void *foo) { struct ext3_inode_info *ei = (struct ext3_inode_info *) foo; diff -puN fs/ext4/super.c~slb-drop-kmem-cache-argument-from-constructor fs/ext4/super.c --- a/fs/ext4/super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/ext4/super.c @@ -589,7 +589,7 @@ static void ext4_destroy_inode(struct in kmem_cache_free(ext4_inode_cachep, EXT4_I(inode)); } -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct ext4_inode_info *ei = (struct ext4_inode_info *) foo; diff -puN fs/fat/cache.c~slb-drop-kmem-cache-argument-from-constructor fs/fat/cache.c --- a/fs/fat/cache.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/fat/cache.c @@ -36,7 +36,7 @@ static inline int fat_max_cache(struct i static struct kmem_cache *fat_cache_cachep; -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct fat_cache *cache = (struct fat_cache *)foo; diff -puN fs/fat/inode.c~slb-drop-kmem-cache-argument-from-constructor fs/fat/inode.c --- a/fs/fat/inode.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/fat/inode.c @@ -498,7 +498,7 @@ static void fat_destroy_inode(struct ino kmem_cache_free(fat_inode_cachep, MSDOS_I(inode)); } -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct msdos_inode_info *ei = (struct msdos_inode_info *)foo; diff -puN fs/fuse/inode.c~slb-drop-kmem-cache-argument-from-constructor fs/fuse/inode.c --- a/fs/fuse/inode.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/fuse/inode.c @@ -977,7 +977,7 @@ static inline void unregister_fuseblk(vo } #endif -static void fuse_inode_init_once(struct kmem_cache *cachep, void *foo) +static void fuse_inode_init_once(void *foo) { struct inode * inode = foo; diff -puN fs/gfs2/main.c~slb-drop-kmem-cache-argument-from-constructor fs/gfs2/main.c --- a/fs/gfs2/main.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/gfs2/main.c @@ -24,7 +24,7 @@ #include "util.h" #include "glock.h" -static void gfs2_init_inode_once(struct kmem_cache *cachep, void *foo) +static void gfs2_init_inode_once(void *foo) { struct gfs2_inode *ip = foo; @@ -33,7 +33,7 @@ static void gfs2_init_inode_once(struct ip->i_alloc = NULL; } -static void gfs2_init_glock_once(struct kmem_cache *cachep, void *foo) +static void gfs2_init_glock_once(void *foo) { struct gfs2_glock *gl = foo; diff -puN fs/hfs/super.c~slb-drop-kmem-cache-argument-from-constructor fs/hfs/super.c --- a/fs/hfs/super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/hfs/super.c @@ -432,7 +432,7 @@ static struct file_system_type hfs_fs_ty .fs_flags = FS_REQUIRES_DEV, }; -static void hfs_init_once(struct kmem_cache *cachep, void *p) +static void hfs_init_once(void *p) { struct hfs_inode_info *i = p; diff -puN fs/hfsplus/super.c~slb-drop-kmem-cache-argument-from-constructor fs/hfsplus/super.c --- a/fs/hfsplus/super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/hfsplus/super.c @@ -485,7 +485,7 @@ static struct file_system_type hfsplus_f .fs_flags = FS_REQUIRES_DEV, }; -static void hfsplus_init_once(struct kmem_cache *cachep, void *p) +static void hfsplus_init_once(void *p) { struct hfsplus_inode_info *i = p; diff -puN fs/hpfs/super.c~slb-drop-kmem-cache-argument-from-constructor fs/hpfs/super.c --- a/fs/hpfs/super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/hpfs/super.c @@ -173,7 +173,7 @@ static void hpfs_destroy_inode(struct in kmem_cache_free(hpfs_inode_cachep, hpfs_i(inode)); } -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct hpfs_inode_info *ei = (struct hpfs_inode_info *) foo; diff -puN fs/hugetlbfs/inode.c~slb-drop-kmem-cache-argument-from-constructor fs/hugetlbfs/inode.c --- a/fs/hugetlbfs/inode.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/hugetlbfs/inode.c @@ -705,7 +705,7 @@ static const struct address_space_operat }; -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct hugetlbfs_inode_info *ei = (struct hugetlbfs_inode_info *)foo; diff -puN fs/inode.c~slb-drop-kmem-cache-argument-from-constructor fs/inode.c --- a/fs/inode.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/inode.c @@ -224,7 +224,7 @@ void inode_init_once(struct inode *inode EXPORT_SYMBOL(inode_init_once); -static void init_once(struct kmem_cache * cachep, void *foo) +static void init_once(void *foo) { struct inode * inode = (struct inode *) foo; diff -puN fs/isofs/inode.c~slb-drop-kmem-cache-argument-from-constructor fs/isofs/inode.c --- a/fs/isofs/inode.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/isofs/inode.c @@ -73,7 +73,7 @@ static void isofs_destroy_inode(struct i kmem_cache_free(isofs_inode_cachep, ISOFS_I(inode)); } -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct iso_inode_info *ei = foo; diff -puN fs/jffs2/super.c~slb-drop-kmem-cache-argument-from-constructor fs/jffs2/super.c --- a/fs/jffs2/super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/jffs2/super.c @@ -44,7 +44,7 @@ static void jffs2_destroy_inode(struct i kmem_cache_free(jffs2_inode_cachep, JFFS2_INODE_INFO(inode)); } -static void jffs2_i_init_once(struct kmem_cache *cachep, void *foo) +static void jffs2_i_init_once(void *foo) { struct jffs2_inode_info *f = foo; diff -puN fs/jfs/jfs_metapage.c~slb-drop-kmem-cache-argument-from-constructor fs/jfs/jfs_metapage.c --- a/fs/jfs/jfs_metapage.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/jfs/jfs_metapage.c @@ -182,7 +182,7 @@ static inline void remove_metapage(struc #endif -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct metapage *mp = (struct metapage *)foo; diff -puN fs/jfs/super.c~slb-drop-kmem-cache-argument-from-constructor fs/jfs/super.c --- a/fs/jfs/super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/jfs/super.c @@ -760,7 +760,7 @@ static struct file_system_type jfs_fs_ty .fs_flags = FS_REQUIRES_DEV, }; -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct jfs_inode_info *jfs_ip = (struct jfs_inode_info *) foo; diff -puN fs/locks.c~slb-drop-kmem-cache-argument-from-constructor fs/locks.c --- a/fs/locks.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/locks.c @@ -201,7 +201,7 @@ EXPORT_SYMBOL(locks_init_lock); * Initialises the fields of the file lock which are invariant for * free file_locks. */ -static void init_once(struct kmem_cache *cache, void *foo) +static void init_once(void *foo) { struct file_lock *lock = (struct file_lock *) foo; diff -puN fs/minix/inode.c~slb-drop-kmem-cache-argument-from-constructor fs/minix/inode.c --- a/fs/minix/inode.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/minix/inode.c @@ -68,7 +68,7 @@ static void minix_destroy_inode(struct i kmem_cache_free(minix_inode_cachep, minix_i(inode)); } -static void init_once(struct kmem_cache * cachep, void *foo) +static void init_once(void *foo) { struct minix_inode_info *ei = (struct minix_inode_info *) foo; diff -puN fs/ncpfs/inode.c~slb-drop-kmem-cache-argument-from-constructor fs/ncpfs/inode.c --- a/fs/ncpfs/inode.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/ncpfs/inode.c @@ -64,7 +64,7 @@ static void ncp_destroy_inode(struct ino kmem_cache_free(ncp_inode_cachep, NCP_FINFO(inode)); } -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct ncp_inode_info *ei = (struct ncp_inode_info *) foo; diff -puN fs/nfs/inode.c~slb-drop-kmem-cache-argument-from-constructor fs/nfs/inode.c --- a/fs/nfs/inode.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/nfs/inode.c @@ -1242,7 +1242,7 @@ static inline void nfs4_init_once(struct #endif } -static void init_once(struct kmem_cache * cachep, void *foo) +static void init_once(void *foo) { struct nfs_inode *nfsi = (struct nfs_inode *) foo; diff -puN fs/ntfs/super.c~slb-drop-kmem-cache-argument-from-constructor fs/ntfs/super.c --- a/fs/ntfs/super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/ntfs/super.c @@ -3080,7 +3080,7 @@ struct kmem_cache *ntfs_inode_cache; struct kmem_cache *ntfs_big_inode_cache; /* Init once constructor for the inode slab cache. */ -static void ntfs_big_inode_init_once(struct kmem_cache *cachep, void *foo) +static void ntfs_big_inode_init_once(void *foo) { ntfs_inode *ni = (ntfs_inode *)foo; diff -puN fs/ocfs2/dlm/dlmfs.c~slb-drop-kmem-cache-argument-from-constructor fs/ocfs2/dlm/dlmfs.c --- a/fs/ocfs2/dlm/dlmfs.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/ocfs2/dlm/dlmfs.c @@ -267,8 +267,7 @@ static ssize_t dlmfs_file_write(struct f return writelen; } -static void dlmfs_init_once(struct kmem_cache *cachep, - void *foo) +static void dlmfs_init_once(void *foo) { struct dlmfs_inode_private *ip = (struct dlmfs_inode_private *) foo; diff -puN fs/ocfs2/super.c~slb-drop-kmem-cache-argument-from-constructor fs/ocfs2/super.c --- a/fs/ocfs2/super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/ocfs2/super.c @@ -1118,7 +1118,7 @@ bail: return status; } -static void ocfs2_inode_init_once(struct kmem_cache *cachep, void *data) +static void ocfs2_inode_init_once(void *data) { struct ocfs2_inode_info *oi = data; diff -puN fs/openpromfs/inode.c~slb-drop-kmem-cache-argument-from-constructor fs/openpromfs/inode.c --- a/fs/openpromfs/inode.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/openpromfs/inode.c @@ -430,7 +430,7 @@ static struct file_system_type openprom_ .kill_sb = kill_anon_super, }; -static void op_inode_init_once(struct kmem_cache * cachep, void *data) +static void op_inode_init_once(void *data) { struct op_inode_info *oi = (struct op_inode_info *) data; diff -puN fs/proc/inode.c~slb-drop-kmem-cache-argument-from-constructor fs/proc/inode.c --- a/fs/proc/inode.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/proc/inode.c @@ -94,7 +94,7 @@ static void proc_destroy_inode(struct in kmem_cache_free(proc_inode_cachep, PROC_I(inode)); } -static void init_once(struct kmem_cache * cachep, void *foo) +static void init_once(void *foo) { struct proc_inode *ei = (struct proc_inode *) foo; diff -puN fs/qnx4/inode.c~slb-drop-kmem-cache-argument-from-constructor fs/qnx4/inode.c --- a/fs/qnx4/inode.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/qnx4/inode.c @@ -553,7 +553,7 @@ static void qnx4_destroy_inode(struct in kmem_cache_free(qnx4_inode_cachep, qnx4_i(inode)); } -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct qnx4_inode_info *ei = (struct qnx4_inode_info *) foo; diff -puN fs/reiserfs/super.c~slb-drop-kmem-cache-argument-from-constructor fs/reiserfs/super.c --- a/fs/reiserfs/super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/reiserfs/super.c @@ -521,7 +521,7 @@ static void reiserfs_destroy_inode(struc kmem_cache_free(reiserfs_inode_cachep, REISERFS_I(inode)); } -static void init_once(struct kmem_cache * cachep, void *foo) +static void init_once(void *foo) { struct reiserfs_inode_info *ei = (struct reiserfs_inode_info *)foo; diff -puN fs/romfs/inode.c~slb-drop-kmem-cache-argument-from-constructor fs/romfs/inode.c --- a/fs/romfs/inode.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/romfs/inode.c @@ -577,7 +577,7 @@ static void romfs_destroy_inode(struct i kmem_cache_free(romfs_inode_cachep, ROMFS_I(inode)); } -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct romfs_inode_info *ei = foo; diff -puN fs/smbfs/inode.c~slb-drop-kmem-cache-argument-from-constructor fs/smbfs/inode.c --- a/fs/smbfs/inode.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/smbfs/inode.c @@ -67,7 +67,7 @@ static void smb_destroy_inode(struct ino kmem_cache_free(smb_inode_cachep, SMB_I(inode)); } -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct smb_inode_info *ei = (struct smb_inode_info *) foo; diff -puN fs/sysv/inode.c~slb-drop-kmem-cache-argument-from-constructor fs/sysv/inode.c --- a/fs/sysv/inode.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/sysv/inode.c @@ -326,7 +326,7 @@ static void sysv_destroy_inode(struct in kmem_cache_free(sysv_inode_cachep, SYSV_I(inode)); } -static void init_once(struct kmem_cache *cachep, void *p) +static void init_once(void *p) { struct sysv_inode_info *si = (struct sysv_inode_info *)p; diff -puN fs/udf/super.c~slb-drop-kmem-cache-argument-from-constructor fs/udf/super.c --- a/fs/udf/super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/udf/super.c @@ -148,7 +148,7 @@ static void udf_destroy_inode(struct ino kmem_cache_free(udf_inode_cachep, UDF_I(inode)); } -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct udf_inode_info *ei = (struct udf_inode_info *)foo; diff -puN fs/ufs/super.c~slb-drop-kmem-cache-argument-from-constructor fs/ufs/super.c --- a/fs/ufs/super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/ufs/super.c @@ -1302,7 +1302,7 @@ static void ufs_destroy_inode(struct ino kmem_cache_free(ufs_inode_cachep, UFS_I(inode)); } -static void init_once(struct kmem_cache * cachep, void *foo) +static void init_once(void *foo) { struct ufs_inode_info *ei = (struct ufs_inode_info *) foo; diff -puN fs/xfs/linux-2.6/kmem.h~slb-drop-kmem-cache-argument-from-constructor fs/xfs/linux-2.6/kmem.h --- a/fs/xfs/linux-2.6/kmem.h~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/xfs/linux-2.6/kmem.h @@ -79,7 +79,7 @@ kmem_zone_init(int size, char *zone_name static inline kmem_zone_t * kmem_zone_init_flags(int size, char *zone_name, unsigned long flags, - void (*construct)(kmem_zone_t *, void *)) + void (*construct)(void *)) { return kmem_cache_create(zone_name, size, 0, flags, construct); } diff -puN fs/xfs/linux-2.6/xfs_super.c~slb-drop-kmem-cache-argument-from-constructor fs/xfs/linux-2.6/xfs_super.c --- a/fs/xfs/linux-2.6/xfs_super.c~slb-drop-kmem-cache-argument-from-constructor +++ a/fs/xfs/linux-2.6/xfs_super.c @@ -982,7 +982,6 @@ xfs_fs_destroy_inode( STATIC void xfs_fs_inode_init_once( - kmem_zone_t *zonep, void *vnode) { inode_init_once(vn_to_inode((bhv_vnode_t *)vnode)); diff -puN include/linux/slab.h~slb-drop-kmem-cache-argument-from-constructor include/linux/slab.h --- a/include/linux/slab.h~slb-drop-kmem-cache-argument-from-constructor +++ a/include/linux/slab.h @@ -65,7 +65,7 @@ int slab_is_available(void); struct kmem_cache *kmem_cache_create(const char *, size_t, size_t, unsigned long, - void (*)(struct kmem_cache *, void *)); + void (*)(void *)); void kmem_cache_destroy(struct kmem_cache *); int kmem_cache_shrink(struct kmem_cache *); void kmem_cache_free(struct kmem_cache *, void *); diff -puN include/linux/slab_def.h~slb-drop-kmem-cache-argument-from-constructor include/linux/slab_def.h --- a/include/linux/slab_def.h~slb-drop-kmem-cache-argument-from-constructor +++ a/include/linux/slab_def.h @@ -50,7 +50,7 @@ struct kmem_cache { unsigned int dflags; /* dynamic flags */ /* constructor func */ - void (*ctor)(struct kmem_cache *, void *); + void (*ctor)(void *); /* 5) cache creation/removal */ const char *name; diff -puN include/linux/slub_def.h~slb-drop-kmem-cache-argument-from-constructor include/linux/slub_def.h --- a/include/linux/slub_def.h~slb-drop-kmem-cache-argument-from-constructor +++ a/include/linux/slub_def.h @@ -85,7 +85,7 @@ struct kmem_cache { struct kmem_cache_order_objects min; gfp_t allocflags; /* gfp flags to use on each alloc */ int refcount; /* Refcount for slab cache destroy */ - void (*ctor)(struct kmem_cache *, void *); + void (*ctor)(void *); int inuse; /* Offset to metadata */ int align; /* Alignment */ const char *name; /* Name (only for display!) */ diff -puN ipc/mqueue.c~slb-drop-kmem-cache-argument-from-constructor ipc/mqueue.c --- a/ipc/mqueue.c~slb-drop-kmem-cache-argument-from-constructor +++ a/ipc/mqueue.c @@ -207,7 +207,7 @@ static int mqueue_get_sb(struct file_sys return get_sb_single(fs_type, flags, data, mqueue_fill_super, mnt); } -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct mqueue_inode_info *p = (struct mqueue_inode_info *) foo; diff -puN kernel/fork.c~slb-drop-kmem-cache-argument-from-constructor kernel/fork.c --- a/kernel/fork.c~slb-drop-kmem-cache-argument-from-constructor +++ a/kernel/fork.c @@ -1462,7 +1462,7 @@ long do_fork(unsigned long clone_flags, #define ARCH_MIN_MMSTRUCT_ALIGN 0 #endif -static void sighand_ctor(struct kmem_cache *cachep, void *data) +static void sighand_ctor(void *data) { struct sighand_struct *sighand = data; diff -puN lib/idr.c~slb-drop-kmem-cache-argument-from-constructor lib/idr.c --- a/lib/idr.c~slb-drop-kmem-cache-argument-from-constructor +++ a/lib/idr.c @@ -607,7 +607,7 @@ void *idr_replace(struct idr *idp, void } EXPORT_SYMBOL(idr_replace); -static void idr_cache_ctor(struct kmem_cache *idr_layer_cache, void *idr_layer) +static void idr_cache_ctor(void *idr_layer) { memset(idr_layer, 0, sizeof(struct idr_layer)); } diff -puN lib/radix-tree.c~slb-drop-kmem-cache-argument-from-constructor lib/radix-tree.c --- a/lib/radix-tree.c~slb-drop-kmem-cache-argument-from-constructor +++ a/lib/radix-tree.c @@ -1183,7 +1183,7 @@ int radix_tree_tagged(struct radix_tree_ EXPORT_SYMBOL(radix_tree_tagged); static void -radix_tree_node_ctor(struct kmem_cache *cachep, void *node) +radix_tree_node_ctor(void *node) { memset(node, 0, sizeof(struct radix_tree_node)); } diff -puN mm/rmap.c~slb-drop-kmem-cache-argument-from-constructor mm/rmap.c --- a/mm/rmap.c~slb-drop-kmem-cache-argument-from-constructor +++ a/mm/rmap.c @@ -141,7 +141,7 @@ void anon_vma_unlink(struct vm_area_stru anon_vma_free(anon_vma); } -static void anon_vma_ctor(struct kmem_cache *cachep, void *data) +static void anon_vma_ctor(void *data) { struct anon_vma *anon_vma = data; diff -puN mm/shmem.c~slb-drop-kmem-cache-argument-from-constructor mm/shmem.c --- a/mm/shmem.c~slb-drop-kmem-cache-argument-from-constructor +++ a/mm/shmem.c @@ -2357,7 +2357,7 @@ static void shmem_destroy_inode(struct i kmem_cache_free(shmem_inode_cachep, SHMEM_I(inode)); } -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct shmem_inode_info *p = (struct shmem_inode_info *) foo; diff -puN mm/slab.c~slb-drop-kmem-cache-argument-from-constructor mm/slab.c --- a/mm/slab.c~slb-drop-kmem-cache-argument-from-constructor +++ a/mm/slab.c @@ -2073,8 +2073,7 @@ static int __init_refok setup_cpu_cache( */ struct kmem_cache * kmem_cache_create (const char *name, size_t size, size_t align, - unsigned long flags, - void (*ctor)(struct kmem_cache *, void *)) + unsigned long flags, void (*ctor)(void *)) { size_t left_over, slab_size, ralign; struct kmem_cache *cachep = NULL, *pc; @@ -2605,7 +2604,7 @@ static void cache_init_objs(struct kmem_ cachep->buffer_size / PAGE_SIZE, 0); #else if (cachep->ctor) - cachep->ctor(cachep, objp); + cachep->ctor(objp); #endif slab_bufctl(slabp)[i] = i + 1; } diff -puN mm/slob.c~slb-drop-kmem-cache-argument-from-constructor mm/slob.c --- a/mm/slob.c~slb-drop-kmem-cache-argument-from-constructor +++ a/mm/slob.c @@ -525,12 +525,11 @@ struct kmem_cache { unsigned int size, align; unsigned long flags; const char *name; - void (*ctor)(struct kmem_cache *, void *); + void (*ctor)(void *); }; struct kmem_cache *kmem_cache_create(const char *name, size_t size, - size_t align, unsigned long flags, - void (*ctor)(struct kmem_cache *, void *)) + size_t align, unsigned long flags, void (*ctor)(void *)) { struct kmem_cache *c; @@ -575,7 +574,7 @@ void *kmem_cache_alloc_node(struct kmem_ b = slob_new_page(flags, get_order(c->size), node); if (c->ctor) - c->ctor(c, b); + c->ctor(b); return b; } diff -puN mm/slub.c~slb-drop-kmem-cache-argument-from-constructor mm/slub.c --- a/mm/slub.c~slb-drop-kmem-cache-argument-from-constructor +++ a/mm/slub.c @@ -1014,7 +1014,7 @@ __setup("slub_debug", setup_slub_debug); static unsigned long kmem_cache_flags(unsigned long objsize, unsigned long flags, const char *name, - void (*ctor)(struct kmem_cache *, void *)) + void (*ctor)(void *)) { /* * Enable debugging if selected on the kernel commandline. @@ -1042,7 +1042,7 @@ static inline int check_object(struct km static inline void add_full(struct kmem_cache_node *n, struct page *page) {} static inline unsigned long kmem_cache_flags(unsigned long objsize, unsigned long flags, const char *name, - void (*ctor)(struct kmem_cache *, void *)) + void (*ctor)(void *)) { return flags; } @@ -1109,7 +1109,7 @@ static void setup_object(struct kmem_cac { setup_object_debug(s, page, object); if (unlikely(s->ctor)) - s->ctor(s, object); + s->ctor(object); } static struct page *new_slab(struct kmem_cache *s, gfp_t flags, int node) @@ -2303,7 +2303,7 @@ static int calculate_sizes(struct kmem_c static int kmem_cache_open(struct kmem_cache *s, gfp_t gfpflags, const char *name, size_t size, size_t align, unsigned long flags, - void (*ctor)(struct kmem_cache *, void *)) + void (*ctor)(void *)) { memset(s, 0, kmem_size); s->name = name; @@ -3060,7 +3060,7 @@ static int slab_unmergeable(struct kmem_ static struct kmem_cache *find_mergeable(size_t size, size_t align, unsigned long flags, const char *name, - void (*ctor)(struct kmem_cache *, void *)) + void (*ctor)(void *)) { struct kmem_cache *s; @@ -3100,8 +3100,7 @@ static struct kmem_cache *find_mergeable } struct kmem_cache *kmem_cache_create(const char *name, size_t size, - size_t align, unsigned long flags, - void (*ctor)(struct kmem_cache *, void *)) + size_t align, unsigned long flags, void (*ctor)(void *)) { struct kmem_cache *s; diff -puN net/socket.c~slb-drop-kmem-cache-argument-from-constructor net/socket.c --- a/net/socket.c~slb-drop-kmem-cache-argument-from-constructor +++ a/net/socket.c @@ -265,7 +265,7 @@ static void sock_destroy_inode(struct in container_of(inode, struct socket_alloc, vfs_inode)); } -static void init_once(struct kmem_cache *cachep, void *foo) +static void init_once(void *foo) { struct socket_alloc *ei = (struct socket_alloc *)foo; diff -puN net/sunrpc/rpc_pipe.c~slb-drop-kmem-cache-argument-from-constructor net/sunrpc/rpc_pipe.c --- a/net/sunrpc/rpc_pipe.c~slb-drop-kmem-cache-argument-from-constructor +++ a/net/sunrpc/rpc_pipe.c @@ -897,7 +897,7 @@ static struct file_system_type rpc_pipe_ }; static void -init_once(struct kmem_cache * cachep, void *foo) +init_once(void *foo) { struct rpc_inode *rpci = (struct rpc_inode *) foo; _ Patches currently in -mm which might be from adobriyan@xxxxxxxxx are linux-next.patch cifs-switch-to-seq_files.patch mpt-remove-unused-struct-mpt_proc_entry_t.patch move-proc_kmsg_operations-to-fs-proc-internalh.patch proc-always-do-release.patch proc-always-do-release-fix.patch proc-remove-pathetic-remount-code.patch proc-move-kconfig-to-fs-proc-kconfig.patch sysctl-allow-override-of-proc-sys-net-with-cap_net_admin.patch slb-drop-kmem-cache-argument-from-constructor.patch slb-drop-kmem-cache-argument-from-constructor-fix.patch proc-use-non-racy-method-for-proc-page_owner-creation-page_owner.patch likely_prof-changed-to-use-proc_create.patch proc-remove-proc_root-from-drivers-likelyprof.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html