Remove SLAB_CTOR_CONSTRUCTOR

SLAB_CTOR_CONSTRUCTOR is always specified. No point in checking it.

Signed-off-by: Christoph Lameter <clameter@sgi.com>
Cc: David Howells <dhowells@redhat.com>
Cc: Jens Axboe <jens.axboe@oracle.com>
Cc: Steven French <sfrench@us.ibm.com>
Cc: Michael Halcrow <mhalcrow@us.ibm.com>
Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: Miklos Szeredi <miklos@szeredi.hu>
Cc: Steven Whitehouse <swhiteho@redhat.com>
Cc: Roman Zippel <zippel@linux-m68k.org>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Dave Kleikamp <shaggy@austin.ibm.com>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
Cc: "J. Bruce Fields" <bfields@fieldses.org>
Cc: Anton Altaparmakov <aia21@cantab.net>
Cc: Mark Fasheh <mark.fasheh@oracle.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Jan Kara <jack@ucw.cz>
Cc: David Chinner <dgc@sgi.com>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Christoph Lameter 2007-05-16 22:10:57 -07:00 committed by Linus Torvalds
parent 5577bd8a85
commit a35afb830f
56 changed files with 178 additions and 277 deletions

View File

@ -71,9 +71,7 @@ spufs_init_once(void *p, struct kmem_cache * cachep, unsigned long flags)
{ {
struct spufs_inode_info *ei = p; struct spufs_inode_info *ei = p;
if (flags & SLAB_CTOR_CONSTRUCTOR) { inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
}
} }
static struct inode * static struct inode *

View File

@ -940,9 +940,6 @@ static void ltree_entry_ctor(void *obj, struct kmem_cache *cache,
{ {
struct ltree_entry *le = obj; struct ltree_entry *le = obj;
if (flags & SLAB_CTOR_CONSTRUCTOR)
return;
le->users = 0; le->users = 0;
init_rwsem(&le->mutex); init_rwsem(&le->mutex);
} }

View File

@ -232,8 +232,7 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct adfs_inode_info *ei = (struct adfs_inode_info *) foo; struct adfs_inode_info *ei = (struct adfs_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -87,11 +87,9 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct affs_inode_info *ei = (struct affs_inode_info *) foo; struct affs_inode_info *ei = (struct affs_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) { init_MUTEX(&ei->i_link_lock);
init_MUTEX(&ei->i_link_lock); init_MUTEX(&ei->i_ext_lock);
init_MUTEX(&ei->i_ext_lock); inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
}
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -451,17 +451,15 @@ static void afs_i_init_once(void *_vnode, struct kmem_cache *cachep,
{ {
struct afs_vnode *vnode = _vnode; struct afs_vnode *vnode = _vnode;
if (flags & SLAB_CTOR_CONSTRUCTOR) { memset(vnode, 0, sizeof(*vnode));
memset(vnode, 0, sizeof(*vnode)); inode_init_once(&vnode->vfs_inode);
inode_init_once(&vnode->vfs_inode); init_waitqueue_head(&vnode->update_waitq);
init_waitqueue_head(&vnode->update_waitq); mutex_init(&vnode->permits_lock);
mutex_init(&vnode->permits_lock); mutex_init(&vnode->validate_lock);
mutex_init(&vnode->validate_lock); spin_lock_init(&vnode->writeback_lock);
spin_lock_init(&vnode->writeback_lock); spin_lock_init(&vnode->lock);
spin_lock_init(&vnode->lock); INIT_LIST_HEAD(&vnode->writebacks);
INIT_LIST_HEAD(&vnode->writebacks); INIT_WORK(&vnode->cb_broken_work, afs_broken_callback_work);
INIT_WORK(&vnode->cb_broken_work, afs_broken_callback_work);
}
} }
/* /*

View File

@ -292,10 +292,8 @@ befs_destroy_inode(struct inode *inode)
static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flags) static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flags)
{ {
struct befs_inode_info *bi = (struct befs_inode_info *) foo; struct befs_inode_info *bi = (struct befs_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) { inode_init_once(&bi->vfs_inode);
inode_init_once(&bi->vfs_inode);
}
} }
static void static void

View File

@ -248,8 +248,7 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct bfs_inode_info *bi = foo; struct bfs_inode_info *bi = foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&bi->vfs_inode);
inode_init_once(&bi->vfs_inode);
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -458,17 +458,15 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
struct bdev_inode *ei = (struct bdev_inode *) foo; struct bdev_inode *ei = (struct bdev_inode *) foo;
struct block_device *bdev = &ei->bdev; struct block_device *bdev = &ei->bdev;
if (flags & SLAB_CTOR_CONSTRUCTOR) { memset(bdev, 0, sizeof(*bdev));
memset(bdev, 0, sizeof(*bdev)); mutex_init(&bdev->bd_mutex);
mutex_init(&bdev->bd_mutex); sema_init(&bdev->bd_mount_sem, 1);
sema_init(&bdev->bd_mount_sem, 1); INIT_LIST_HEAD(&bdev->bd_inodes);
INIT_LIST_HEAD(&bdev->bd_inodes); INIT_LIST_HEAD(&bdev->bd_list);
INIT_LIST_HEAD(&bdev->bd_list);
#ifdef CONFIG_SYSFS #ifdef CONFIG_SYSFS
INIT_LIST_HEAD(&bdev->bd_holder_list); INIT_LIST_HEAD(&bdev->bd_holder_list);
#endif #endif
inode_init_once(&ei->vfs_inode); inode_init_once(&ei->vfs_inode);
}
} }
static inline void __bd_forget(struct inode *inode) static inline void __bd_forget(struct inode *inode)

View File

@ -2898,8 +2898,9 @@ static void recalc_bh_state(void)
struct buffer_head *alloc_buffer_head(gfp_t gfp_flags) struct buffer_head *alloc_buffer_head(gfp_t gfp_flags)
{ {
struct buffer_head *ret = kmem_cache_alloc(bh_cachep, gfp_flags); struct buffer_head *ret = kmem_cache_zalloc(bh_cachep, gfp_flags);
if (ret) { if (ret) {
INIT_LIST_HEAD(&ret->b_assoc_buffers);
get_cpu_var(bh_accounting).nr++; get_cpu_var(bh_accounting).nr++;
recalc_bh_state(); recalc_bh_state();
put_cpu_var(bh_accounting); put_cpu_var(bh_accounting);
@ -2918,17 +2919,6 @@ void free_buffer_head(struct buffer_head *bh)
} }
EXPORT_SYMBOL(free_buffer_head); EXPORT_SYMBOL(free_buffer_head);
static void
init_buffer_head(void *data, struct kmem_cache *cachep, unsigned long flags)
{
if (flags & SLAB_CTOR_CONSTRUCTOR) {
struct buffer_head * bh = (struct buffer_head *)data;
memset(bh, 0, sizeof(*bh));
INIT_LIST_HEAD(&bh->b_assoc_buffers);
}
}
static void buffer_exit_cpu(int cpu) static void buffer_exit_cpu(int cpu)
{ {
int i; int i;
@ -2955,12 +2945,8 @@ void __init buffer_init(void)
{ {
int nrpages; int nrpages;
bh_cachep = kmem_cache_create("buffer_head", bh_cachep = KMEM_CACHE(buffer_head,
sizeof(struct buffer_head), 0, SLAB_RECLAIM_ACCOUNT|SLAB_PANIC|SLAB_MEM_SPREAD);
(SLAB_RECLAIM_ACCOUNT|SLAB_PANIC|
SLAB_MEM_SPREAD),
init_buffer_head,
NULL);
/* /*
* Limit the bh occupancy to 10% of ZONE_NORMAL * Limit the bh occupancy to 10% of ZONE_NORMAL

View File

@ -701,10 +701,8 @@ cifs_init_once(void *inode, struct kmem_cache * cachep, unsigned long flags)
{ {
struct cifsInodeInfo *cifsi = inode; struct cifsInodeInfo *cifsi = inode;
if (flags & SLAB_CTOR_CONSTRUCTOR) { inode_init_once(&cifsi->vfs_inode);
inode_init_once(&cifsi->vfs_inode); INIT_LIST_HEAD(&cifsi->lockList);
INIT_LIST_HEAD(&cifsi->lockList);
}
} }
static int static int

View File

@ -62,8 +62,7 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct coda_inode_info *ei = (struct coda_inode_info *) foo; struct coda_inode_info *ei = (struct coda_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
} }
int coda_init_inodecache(void) int coda_init_inodecache(void)

View File

@ -583,8 +583,7 @@ inode_info_init_once(void *vptr, struct kmem_cache *cachep, unsigned long flags)
{ {
struct ecryptfs_inode_info *ei = (struct ecryptfs_inode_info *)vptr; struct ecryptfs_inode_info *ei = (struct ecryptfs_inode_info *)vptr;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
} }
static struct ecryptfs_cache_info { static struct ecryptfs_cache_info {

View File

@ -72,8 +72,7 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct efs_inode_info *ei = (struct efs_inode_info *) foo; struct efs_inode_info *ei = (struct efs_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -160,13 +160,11 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct ext2_inode_info *ei = (struct ext2_inode_info *) foo; struct ext2_inode_info *ei = (struct ext2_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) { rwlock_init(&ei->i_meta_lock);
rwlock_init(&ei->i_meta_lock);
#ifdef CONFIG_EXT2_FS_XATTR #ifdef CONFIG_EXT2_FS_XATTR
init_rwsem(&ei->xattr_sem); init_rwsem(&ei->xattr_sem);
#endif #endif
inode_init_once(&ei->vfs_inode); inode_init_once(&ei->vfs_inode);
}
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -466,14 +466,12 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct ext3_inode_info *ei = (struct ext3_inode_info *) foo; struct ext3_inode_info *ei = (struct ext3_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) { INIT_LIST_HEAD(&ei->i_orphan);
INIT_LIST_HEAD(&ei->i_orphan);
#ifdef CONFIG_EXT3_FS_XATTR #ifdef CONFIG_EXT3_FS_XATTR
init_rwsem(&ei->xattr_sem); init_rwsem(&ei->xattr_sem);
#endif #endif
mutex_init(&ei->truncate_mutex); mutex_init(&ei->truncate_mutex);
inode_init_once(&ei->vfs_inode); inode_init_once(&ei->vfs_inode);
}
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -517,14 +517,12 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct ext4_inode_info *ei = (struct ext4_inode_info *) foo; struct ext4_inode_info *ei = (struct ext4_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) { INIT_LIST_HEAD(&ei->i_orphan);
INIT_LIST_HEAD(&ei->i_orphan);
#ifdef CONFIG_EXT4DEV_FS_XATTR #ifdef CONFIG_EXT4DEV_FS_XATTR
init_rwsem(&ei->xattr_sem); init_rwsem(&ei->xattr_sem);
#endif #endif
mutex_init(&ei->truncate_mutex); mutex_init(&ei->truncate_mutex);
inode_init_once(&ei->vfs_inode); inode_init_once(&ei->vfs_inode);
}
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -40,8 +40,7 @@ static void init_once(void *foo, struct kmem_cache *cachep, unsigned long flags)
{ {
struct fat_cache *cache = (struct fat_cache *)foo; struct fat_cache *cache = (struct fat_cache *)foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) INIT_LIST_HEAD(&cache->cache_list);
INIT_LIST_HEAD(&cache->cache_list);
} }
int __init fat_cache_init(void) int __init fat_cache_init(void)

View File

@ -500,14 +500,12 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct msdos_inode_info *ei = (struct msdos_inode_info *)foo; struct msdos_inode_info *ei = (struct msdos_inode_info *)foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) { spin_lock_init(&ei->cache_lru_lock);
spin_lock_init(&ei->cache_lru_lock); ei->nr_caches = 0;
ei->nr_caches = 0; ei->cache_valid_id = FAT_CACHE_VALID + 1;
ei->cache_valid_id = FAT_CACHE_VALID + 1; INIT_LIST_HEAD(&ei->cache_lru);
INIT_LIST_HEAD(&ei->cache_lru); INIT_HLIST_NODE(&ei->i_fat_hash);
INIT_HLIST_NODE(&ei->i_fat_hash); inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
}
} }
static int __init fat_init_inodecache(void) static int __init fat_init_inodecache(void)

View File

@ -687,8 +687,7 @@ static void fuse_inode_init_once(void *foo, struct kmem_cache *cachep,
{ {
struct inode * inode = foo; struct inode * inode = foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(inode);
inode_init_once(inode);
} }
static int __init fuse_fs_init(void) static int __init fuse_fs_init(void)

View File

@ -27,29 +27,27 @@
static void gfs2_init_inode_once(void *foo, struct kmem_cache *cachep, unsigned long flags) static void gfs2_init_inode_once(void *foo, struct kmem_cache *cachep, unsigned long flags)
{ {
struct gfs2_inode *ip = foo; struct gfs2_inode *ip = foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) {
inode_init_once(&ip->i_inode); inode_init_once(&ip->i_inode);
spin_lock_init(&ip->i_spin); spin_lock_init(&ip->i_spin);
init_rwsem(&ip->i_rw_mutex); init_rwsem(&ip->i_rw_mutex);
memset(ip->i_cache, 0, sizeof(ip->i_cache)); memset(ip->i_cache, 0, sizeof(ip->i_cache));
}
} }
static void gfs2_init_glock_once(void *foo, struct kmem_cache *cachep, unsigned long flags) static void gfs2_init_glock_once(void *foo, struct kmem_cache *cachep, unsigned long flags)
{ {
struct gfs2_glock *gl = foo; struct gfs2_glock *gl = foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) {
INIT_HLIST_NODE(&gl->gl_list); INIT_HLIST_NODE(&gl->gl_list);
spin_lock_init(&gl->gl_spin); spin_lock_init(&gl->gl_spin);
INIT_LIST_HEAD(&gl->gl_holders); INIT_LIST_HEAD(&gl->gl_holders);
INIT_LIST_HEAD(&gl->gl_waiters1); INIT_LIST_HEAD(&gl->gl_waiters1);
INIT_LIST_HEAD(&gl->gl_waiters3); INIT_LIST_HEAD(&gl->gl_waiters3);
gl->gl_lvb = NULL; gl->gl_lvb = NULL;
atomic_set(&gl->gl_lvb_count, 0); atomic_set(&gl->gl_lvb_count, 0);
INIT_LIST_HEAD(&gl->gl_reclaim); INIT_LIST_HEAD(&gl->gl_reclaim);
INIT_LIST_HEAD(&gl->gl_ail_list); INIT_LIST_HEAD(&gl->gl_ail_list);
atomic_set(&gl->gl_ail_count, 0); atomic_set(&gl->gl_ail_count, 0);
}
} }
/** /**

View File

@ -434,8 +434,7 @@ static void hfs_init_once(void *p, struct kmem_cache *cachep, unsigned long flag
{ {
struct hfs_inode_info *i = p; struct hfs_inode_info *i = p;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&i->vfs_inode);
inode_init_once(&i->vfs_inode);
} }
static int __init init_hfs_fs(void) static int __init init_hfs_fs(void)

View File

@ -470,8 +470,7 @@ static void hfsplus_init_once(void *p, struct kmem_cache *cachep, unsigned long
{ {
struct hfsplus_inode_info *i = p; struct hfsplus_inode_info *i = p;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&i->vfs_inode);
inode_init_once(&i->vfs_inode);
} }
static int __init init_hfsplus_fs(void) static int __init init_hfsplus_fs(void)

View File

@ -176,11 +176,9 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct hpfs_inode_info *ei = (struct hpfs_inode_info *) foo; struct hpfs_inode_info *ei = (struct hpfs_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) { mutex_init(&ei->i_mutex);
mutex_init(&ei->i_mutex); mutex_init(&ei->i_parent_mutex);
mutex_init(&ei->i_parent_mutex); inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
}
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -556,8 +556,7 @@ static void init_once(void *foo, struct kmem_cache *cachep, unsigned long flags)
{ {
struct hugetlbfs_inode_info *ei = (struct hugetlbfs_inode_info *)foo; struct hugetlbfs_inode_info *ei = (struct hugetlbfs_inode_info *)foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
} }
const struct file_operations hugetlbfs_file_operations = { const struct file_operations hugetlbfs_file_operations = {

View File

@ -213,8 +213,7 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct inode * inode = (struct inode *) foo; struct inode * inode = (struct inode *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(inode);
inode_init_once(inode);
} }
/* /*

View File

@ -77,8 +77,7 @@ static void init_once(void *foo, struct kmem_cache * cachep, unsigned long flags
{ {
struct iso_inode_info *ei = foo; struct iso_inode_info *ei = foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -47,10 +47,8 @@ static void jffs2_i_init_once(void * foo, struct kmem_cache * cachep, unsigned l
{ {
struct jffs2_inode_info *ei = (struct jffs2_inode_info *) foo; struct jffs2_inode_info *ei = (struct jffs2_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) { init_MUTEX(&ei->sem);
init_MUTEX(&ei->sem); inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
}
} }
static int jffs2_sync_fs(struct super_block *sb, int wait) static int jffs2_sync_fs(struct super_block *sb, int wait)

View File

@ -184,16 +184,14 @@ static void init_once(void *foo, struct kmem_cache *cachep, unsigned long flags)
{ {
struct metapage *mp = (struct metapage *)foo; struct metapage *mp = (struct metapage *)foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) { mp->lid = 0;
mp->lid = 0; mp->lsn = 0;
mp->lsn = 0; mp->flag = 0;
mp->flag = 0; mp->data = NULL;
mp->data = NULL; mp->clsn = 0;
mp->clsn = 0; mp->log = NULL;
mp->log = NULL; set_bit(META_free, &mp->flag);
set_bit(META_free, &mp->flag); init_waitqueue_head(&mp->wait);
init_waitqueue_head(&mp->wait);
}
} }
static inline struct metapage *alloc_metapage(gfp_t gfp_mask) static inline struct metapage *alloc_metapage(gfp_t gfp_mask)

View File

@ -752,20 +752,18 @@ static void init_once(void *foo, struct kmem_cache * cachep, unsigned long flags
{ {
struct jfs_inode_info *jfs_ip = (struct jfs_inode_info *) foo; struct jfs_inode_info *jfs_ip = (struct jfs_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) { memset(jfs_ip, 0, sizeof(struct jfs_inode_info));
memset(jfs_ip, 0, sizeof(struct jfs_inode_info)); INIT_LIST_HEAD(&jfs_ip->anon_inode_list);
INIT_LIST_HEAD(&jfs_ip->anon_inode_list); init_rwsem(&jfs_ip->rdwrlock);
init_rwsem(&jfs_ip->rdwrlock); mutex_init(&jfs_ip->commit_mutex);
mutex_init(&jfs_ip->commit_mutex); init_rwsem(&jfs_ip->xattr_sem);
init_rwsem(&jfs_ip->xattr_sem); spin_lock_init(&jfs_ip->ag_lock);
spin_lock_init(&jfs_ip->ag_lock); jfs_ip->active_ag = -1;
jfs_ip->active_ag = -1;
#ifdef CONFIG_JFS_POSIX_ACL #ifdef CONFIG_JFS_POSIX_ACL
jfs_ip->i_acl = JFS_ACL_NOT_CACHED; jfs_ip->i_acl = JFS_ACL_NOT_CACHED;
jfs_ip->i_default_acl = JFS_ACL_NOT_CACHED; jfs_ip->i_default_acl = JFS_ACL_NOT_CACHED;
#endif #endif
inode_init_once(&jfs_ip->vfs_inode); inode_init_once(&jfs_ip->vfs_inode);
}
} }
static int __init init_jfs_fs(void) static int __init init_jfs_fs(void)

View File

@ -203,9 +203,6 @@ static void init_once(void *foo, struct kmem_cache *cache, unsigned long flags)
{ {
struct file_lock *lock = (struct file_lock *) foo; struct file_lock *lock = (struct file_lock *) foo;
if (!(flags & SLAB_CTOR_CONSTRUCTOR))
return;
locks_init_lock(lock); locks_init_lock(lock);
} }

View File

@ -73,8 +73,7 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct minix_inode_info *ei = (struct minix_inode_info *) foo; struct minix_inode_info *ei = (struct minix_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -60,10 +60,8 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct ncp_inode_info *ei = (struct ncp_inode_info *) foo; struct ncp_inode_info *ei = (struct ncp_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) { mutex_init(&ei->open_mutex);
mutex_init(&ei->open_mutex); inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
}
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -1164,21 +1164,19 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct nfs_inode *nfsi = (struct nfs_inode *) foo; struct nfs_inode *nfsi = (struct nfs_inode *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) { inode_init_once(&nfsi->vfs_inode);
inode_init_once(&nfsi->vfs_inode); spin_lock_init(&nfsi->req_lock);
spin_lock_init(&nfsi->req_lock); INIT_LIST_HEAD(&nfsi->dirty);
INIT_LIST_HEAD(&nfsi->dirty); INIT_LIST_HEAD(&nfsi->commit);
INIT_LIST_HEAD(&nfsi->commit); INIT_LIST_HEAD(&nfsi->open_files);
INIT_LIST_HEAD(&nfsi->open_files); INIT_LIST_HEAD(&nfsi->access_cache_entry_lru);
INIT_LIST_HEAD(&nfsi->access_cache_entry_lru); INIT_LIST_HEAD(&nfsi->access_cache_inode_lru);
INIT_LIST_HEAD(&nfsi->access_cache_inode_lru); INIT_RADIX_TREE(&nfsi->nfs_page_tree, GFP_ATOMIC);
INIT_RADIX_TREE(&nfsi->nfs_page_tree, GFP_ATOMIC); atomic_set(&nfsi->data_updates, 0);
atomic_set(&nfsi->data_updates, 0); nfsi->ndirty = 0;
nfsi->ndirty = 0; nfsi->ncommit = 0;
nfsi->ncommit = 0; nfsi->npages = 0;
nfsi->npages = 0; nfs4_init_once(nfsi);
nfs4_init_once(nfsi);
}
} }
static int __init nfs_init_inodecache(void) static int __init nfs_init_inodecache(void)

View File

@ -3085,8 +3085,7 @@ static void ntfs_big_inode_init_once(void *foo, struct kmem_cache *cachep,
{ {
ntfs_inode *ni = (ntfs_inode *)foo; ntfs_inode *ni = (ntfs_inode *)foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(VFS_I(ni));
inode_init_once(VFS_I(ni));
} }
/* /*

View File

@ -262,12 +262,10 @@ static void dlmfs_init_once(void *foo,
struct dlmfs_inode_private *ip = struct dlmfs_inode_private *ip =
(struct dlmfs_inode_private *) foo; (struct dlmfs_inode_private *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) { ip->ip_dlm = NULL;
ip->ip_dlm = NULL; ip->ip_parent = NULL;
ip->ip_parent = NULL;
inode_init_once(&ip->ip_vfs_inode); inode_init_once(&ip->ip_vfs_inode);
}
} }
static struct inode *dlmfs_alloc_inode(struct super_block *sb) static struct inode *dlmfs_alloc_inode(struct super_block *sb)

View File

@ -937,31 +937,29 @@ static void ocfs2_inode_init_once(void *data,
{ {
struct ocfs2_inode_info *oi = data; struct ocfs2_inode_info *oi = data;
if (flags & SLAB_CTOR_CONSTRUCTOR) { oi->ip_flags = 0;
oi->ip_flags = 0; oi->ip_open_count = 0;
oi->ip_open_count = 0; spin_lock_init(&oi->ip_lock);
spin_lock_init(&oi->ip_lock); ocfs2_extent_map_init(&oi->vfs_inode);
ocfs2_extent_map_init(&oi->vfs_inode); INIT_LIST_HEAD(&oi->ip_io_markers);
INIT_LIST_HEAD(&oi->ip_io_markers); oi->ip_created_trans = 0;
oi->ip_created_trans = 0; oi->ip_last_trans = 0;
oi->ip_last_trans = 0; oi->ip_dir_start_lookup = 0;
oi->ip_dir_start_lookup = 0;
init_rwsem(&oi->ip_alloc_sem); init_rwsem(&oi->ip_alloc_sem);
mutex_init(&oi->ip_io_mutex); mutex_init(&oi->ip_io_mutex);
oi->ip_blkno = 0ULL; oi->ip_blkno = 0ULL;
oi->ip_clusters = 0; oi->ip_clusters = 0;
ocfs2_lock_res_init_once(&oi->ip_rw_lockres); ocfs2_lock_res_init_once(&oi->ip_rw_lockres);
ocfs2_lock_res_init_once(&oi->ip_meta_lockres); ocfs2_lock_res_init_once(&oi->ip_meta_lockres);
ocfs2_lock_res_init_once(&oi->ip_data_lockres); ocfs2_lock_res_init_once(&oi->ip_data_lockres);
ocfs2_lock_res_init_once(&oi->ip_open_lockres); ocfs2_lock_res_init_once(&oi->ip_open_lockres);
ocfs2_metadata_cache_init(&oi->vfs_inode); ocfs2_metadata_cache_init(&oi->vfs_inode);
inode_init_once(&oi->vfs_inode); inode_init_once(&oi->vfs_inode);
}
} }
static int ocfs2_initialize_mem_caches(void) static int ocfs2_initialize_mem_caches(void)

View File

@ -419,8 +419,7 @@ static void op_inode_init_once(void *data, struct kmem_cache * cachep, unsigned
{ {
struct op_inode_info *oi = (struct op_inode_info *) data; struct op_inode_info *oi = (struct op_inode_info *) data;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&oi->vfs_inode);
inode_init_once(&oi->vfs_inode);
} }
static int __init init_openprom_fs(void) static int __init init_openprom_fs(void)

View File

@ -109,8 +109,7 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct proc_inode *ei = (struct proc_inode *) foo; struct proc_inode *ei = (struct proc_inode *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
} }
int __init proc_init_inodecache(void) int __init proc_init_inodecache(void)

View File

@ -536,8 +536,7 @@ static void init_once(void *foo, struct kmem_cache * cachep,
{ {
struct qnx4_inode_info *ei = (struct qnx4_inode_info *) foo; struct qnx4_inode_info *ei = (struct qnx4_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -511,14 +511,12 @@ static void init_once(void *foo, struct kmem_cache * cachep, unsigned long flags
{ {
struct reiserfs_inode_info *ei = (struct reiserfs_inode_info *)foo; struct reiserfs_inode_info *ei = (struct reiserfs_inode_info *)foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) { INIT_LIST_HEAD(&ei->i_prealloc_list);
INIT_LIST_HEAD(&ei->i_prealloc_list); inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
#ifdef CONFIG_REISERFS_FS_POSIX_ACL #ifdef CONFIG_REISERFS_FS_POSIX_ACL
ei->i_acl_access = NULL; ei->i_acl_access = NULL;
ei->i_acl_default = NULL; ei->i_acl_default = NULL;
#endif #endif
}
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -566,12 +566,11 @@ static void romfs_destroy_inode(struct inode *inode)
kmem_cache_free(romfs_inode_cachep, ROMFS_I(inode)); kmem_cache_free(romfs_inode_cachep, ROMFS_I(inode));
} }
static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flags) static void init_once(void *foo, struct kmem_cache *cachep, unsigned long flags)
{ {
struct romfs_inode_info *ei = (struct romfs_inode_info *) foo; struct romfs_inode_info *ei = foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -70,8 +70,7 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct smb_inode_info *ei = (struct smb_inode_info *) foo; struct smb_inode_info *ei = (struct smb_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -322,8 +322,7 @@ static void init_once(void *p, struct kmem_cache *cachep, unsigned long flags)
{ {
struct sysv_inode_info *si = (struct sysv_inode_info *)p; struct sysv_inode_info *si = (struct sysv_inode_info *)p;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&si->vfs_inode);
inode_init_once(&si->vfs_inode);
} }
const struct super_operations sysv_sops = { const struct super_operations sysv_sops = {

View File

@ -134,10 +134,8 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct udf_inode_info *ei = (struct udf_inode_info *) foo; struct udf_inode_info *ei = (struct udf_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) { ei->i_ext.i_data = NULL;
ei->i_ext.i_data = NULL; inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
}
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -1237,8 +1237,7 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
{ {
struct ufs_inode_info *ei = (struct ufs_inode_info *) foo; struct ufs_inode_info *ei = (struct ufs_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -360,8 +360,7 @@ xfs_fs_inode_init_once(
kmem_zone_t *zonep, kmem_zone_t *zonep,
unsigned long flags) unsigned long flags)
{ {
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(vn_to_inode((bhv_vnode_t *)vnode));
inode_init_once(vn_to_inode((bhv_vnode_t *)vnode));
} }
STATIC int STATIC int

View File

@ -32,9 +32,6 @@ typedef struct kmem_cache kmem_cache_t __deprecated;
#define SLAB_MEM_SPREAD 0x00100000UL /* Spread some memory over cpuset */ #define SLAB_MEM_SPREAD 0x00100000UL /* Spread some memory over cpuset */
#define SLAB_TRACE 0x00200000UL /* Trace allocations and frees */ #define SLAB_TRACE 0x00200000UL /* Trace allocations and frees */
/* Flags passed to a constructor functions */
#define SLAB_CTOR_CONSTRUCTOR 0x001UL /* If not set, then deconstructor */
/* /*
* struct kmem_cache related prototypes * struct kmem_cache related prototypes
*/ */

View File

@ -215,8 +215,7 @@ static void init_once(void *foo, struct kmem_cache * cachep, unsigned long flags
{ {
struct mqueue_inode_info *p = (struct mqueue_inode_info *) foo; struct mqueue_inode_info *p = (struct mqueue_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&p->vfs_inode);
inode_init_once(&p->vfs_inode);
} }
static struct inode *mqueue_alloc_inode(struct super_block *sb) static struct inode *mqueue_alloc_inode(struct super_block *sb)

View File

@ -1427,10 +1427,8 @@ static void sighand_ctor(void *data, struct kmem_cache *cachep,
{ {
struct sighand_struct *sighand = data; struct sighand_struct *sighand = data;
if (flags & SLAB_CTOR_CONSTRUCTOR) { spin_lock_init(&sighand->siglock);
spin_lock_init(&sighand->siglock); INIT_LIST_HEAD(&sighand->signalfd_list);
INIT_LIST_HEAD(&sighand->signalfd_list);
}
} }
void __init proc_caches_init(void) void __init proc_caches_init(void)

View File

@ -162,12 +162,10 @@ void anon_vma_unlink(struct vm_area_struct *vma)
static void anon_vma_ctor(void *data, struct kmem_cache *cachep, static void anon_vma_ctor(void *data, struct kmem_cache *cachep,
unsigned long flags) unsigned long flags)
{ {
if (flags & SLAB_CTOR_CONSTRUCTOR) { struct anon_vma *anon_vma = data;
struct anon_vma *anon_vma = data;
spin_lock_init(&anon_vma->lock); spin_lock_init(&anon_vma->lock);
INIT_LIST_HEAD(&anon_vma->head); INIT_LIST_HEAD(&anon_vma->head);
}
} }
void __init anon_vma_init(void) void __init anon_vma_init(void)

View File

@ -2358,13 +2358,11 @@ static void init_once(void *foo, struct kmem_cache *cachep,
{ {
struct shmem_inode_info *p = (struct shmem_inode_info *) foo; struct shmem_inode_info *p = (struct shmem_inode_info *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) { inode_init_once(&p->vfs_inode);
inode_init_once(&p->vfs_inode);
#ifdef CONFIG_TMPFS_POSIX_ACL #ifdef CONFIG_TMPFS_POSIX_ACL
p->i_acl = NULL; p->i_acl = NULL;
p->i_default_acl = NULL; p->i_default_acl = NULL;
#endif #endif
}
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -2610,7 +2610,7 @@ static inline kmem_bufctl_t *slab_bufctl(struct slab *slabp)
} }
static void cache_init_objs(struct kmem_cache *cachep, static void cache_init_objs(struct kmem_cache *cachep,
struct slab *slabp, unsigned long ctor_flags) struct slab *slabp)
{ {
int i; int i;
@ -2634,7 +2634,7 @@ static void cache_init_objs(struct kmem_cache *cachep,
*/ */
if (cachep->ctor && !(cachep->flags & SLAB_POISON)) if (cachep->ctor && !(cachep->flags & SLAB_POISON))
cachep->ctor(objp + obj_offset(cachep), cachep, cachep->ctor(objp + obj_offset(cachep), cachep,
ctor_flags); 0);
if (cachep->flags & SLAB_RED_ZONE) { if (cachep->flags & SLAB_RED_ZONE) {
if (*dbg_redzone2(cachep, objp) != RED_INACTIVE) if (*dbg_redzone2(cachep, objp) != RED_INACTIVE)
@ -2650,7 +2650,7 @@ static void cache_init_objs(struct kmem_cache *cachep,
cachep->buffer_size / PAGE_SIZE, 0); cachep->buffer_size / PAGE_SIZE, 0);
#else #else
if (cachep->ctor) if (cachep->ctor)
cachep->ctor(objp, cachep, ctor_flags); cachep->ctor(objp, cachep, 0);
#endif #endif
slab_bufctl(slabp)[i] = i + 1; slab_bufctl(slabp)[i] = i + 1;
} }
@ -2739,7 +2739,6 @@ static int cache_grow(struct kmem_cache *cachep,
struct slab *slabp; struct slab *slabp;
size_t offset; size_t offset;
gfp_t local_flags; gfp_t local_flags;
unsigned long ctor_flags;
struct kmem_list3 *l3; struct kmem_list3 *l3;
/* /*
@ -2748,7 +2747,6 @@ static int cache_grow(struct kmem_cache *cachep,
*/ */
BUG_ON(flags & ~(GFP_DMA | GFP_LEVEL_MASK)); BUG_ON(flags & ~(GFP_DMA | GFP_LEVEL_MASK));
ctor_flags = SLAB_CTOR_CONSTRUCTOR;
local_flags = (flags & GFP_LEVEL_MASK); local_flags = (flags & GFP_LEVEL_MASK);
/* Take the l3 list lock to change the colour_next on this node */ /* Take the l3 list lock to change the colour_next on this node */
check_irq_off(); check_irq_off();
@ -2793,7 +2791,7 @@ static int cache_grow(struct kmem_cache *cachep,
slabp->nodeid = nodeid; slabp->nodeid = nodeid;
slab_map_pages(cachep, slabp, objp); slab_map_pages(cachep, slabp, objp);
cache_init_objs(cachep, slabp, ctor_flags); cache_init_objs(cachep, slabp);
if (local_flags & __GFP_WAIT) if (local_flags & __GFP_WAIT)
local_irq_disable(); local_irq_disable();
@ -3077,7 +3075,7 @@ static void *cache_alloc_debugcheck_after(struct kmem_cache *cachep,
#endif #endif
objp += obj_offset(cachep); objp += obj_offset(cachep);
if (cachep->ctor && cachep->flags & SLAB_POISON) if (cachep->ctor && cachep->flags & SLAB_POISON)
cachep->ctor(objp, cachep, SLAB_CTOR_CONSTRUCTOR); cachep->ctor(objp, cachep, 0);
#if ARCH_SLAB_MINALIGN #if ARCH_SLAB_MINALIGN
if ((u32)objp & (ARCH_SLAB_MINALIGN-1)) { if ((u32)objp & (ARCH_SLAB_MINALIGN-1)) {
printk(KERN_ERR "0x%p: not aligned to ARCH_SLAB_MINALIGN=%d\n", printk(KERN_ERR "0x%p: not aligned to ARCH_SLAB_MINALIGN=%d\n",

View File

@ -327,7 +327,7 @@ void *kmem_cache_alloc(struct kmem_cache *c, gfp_t flags)
b = (void *)__get_free_pages(flags, get_order(c->size)); b = (void *)__get_free_pages(flags, get_order(c->size));
if (c->ctor) if (c->ctor)
c->ctor(b, c, SLAB_CTOR_CONSTRUCTOR); c->ctor(b, c, 0);
return b; return b;
} }

View File

@ -994,7 +994,7 @@ static void setup_object(struct kmem_cache *s, struct page *page,
} }
if (unlikely(s->ctor)) if (unlikely(s->ctor))
s->ctor(object, s, SLAB_CTOR_CONSTRUCTOR); s->ctor(object, s, 0);
} }
static struct page *new_slab(struct kmem_cache *s, gfp_t flags, int node) static struct page *new_slab(struct kmem_cache *s, gfp_t flags, int node)

View File

@ -261,8 +261,7 @@ static void init_once(void *foo, struct kmem_cache *cachep, unsigned long flags)
{ {
struct socket_alloc *ei = (struct socket_alloc *)foo; struct socket_alloc *ei = (struct socket_alloc *)foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) inode_init_once(&ei->vfs_inode);
inode_init_once(&ei->vfs_inode);
} }
static int init_inodecache(void) static int init_inodecache(void)

View File

@ -828,19 +828,17 @@ init_once(void * foo, struct kmem_cache * cachep, unsigned long flags)
{ {
struct rpc_inode *rpci = (struct rpc_inode *) foo; struct rpc_inode *rpci = (struct rpc_inode *) foo;
if (flags & SLAB_CTOR_CONSTRUCTOR) { inode_init_once(&rpci->vfs_inode);
inode_init_once(&rpci->vfs_inode); rpci->private = NULL;
rpci->private = NULL; rpci->nreaders = 0;
rpci->nreaders = 0; rpci->nwriters = 0;
rpci->nwriters = 0; INIT_LIST_HEAD(&rpci->in_upcall);
INIT_LIST_HEAD(&rpci->in_upcall); INIT_LIST_HEAD(&rpci->pipe);
INIT_LIST_HEAD(&rpci->pipe); rpci->pipelen = 0;
rpci->pipelen = 0; init_waitqueue_head(&rpci->waitq);
init_waitqueue_head(&rpci->waitq); INIT_DELAYED_WORK(&rpci->queue_timeout,
INIT_DELAYED_WORK(&rpci->queue_timeout, rpc_timeout_upcall_queue);
rpc_timeout_upcall_queue); rpci->ops = NULL;
rpci->ops = NULL;
}
} }
int register_rpc_pipefs(void) int register_rpc_pipefs(void)