aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2011-12-12 15:51:45 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2012-01-03 22:52:40 -0500
commit6b520e0565422966cdf1c3759bd73df77b0f248c (patch)
treef63a26afa7342eb59b125271b16e30a219b59094
parent2a79f17e4a641a2f463cb512cb0ec349844a147b (diff)
vfs: fix the stupidity with i_dentry in inode destructors
Seeing that just about every destructor got that INIT_LIST_HEAD() copied into it, there is no point whatsoever keeping this INIT_LIST_HEAD in inode_init_once(); the cost of taking it into inode_init_always() will be negligible for pipes and sockets and negative for everything else. Not to mention the removal of boilerplate code from ->destroy_inode() instances... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--arch/powerpc/platforms/cell/spufs/inode.c1
-rw-r--r--drivers/staging/pohmelfs/inode.c1
-rw-r--r--fs/9p/vfs_inode.c1
-rw-r--r--fs/affs/super.c1
-rw-r--r--fs/afs/super.c1
-rw-r--r--fs/befs/linuxvfs.c1
-rw-r--r--fs/bfs/inode.c1
-rw-r--r--fs/block_dev.c1
-rw-r--r--fs/btrfs/inode.c1
-rw-r--r--fs/ceph/inode.c1
-rw-r--r--fs/coda/inode.c1
-rw-r--r--fs/ecryptfs/super.c1
-rw-r--r--fs/efs/super.c1
-rw-r--r--fs/exofs/super.c1
-rw-r--r--fs/ext2/super.c1
-rw-r--r--fs/ext3/super.c1
-rw-r--r--fs/ext4/super.c1
-rw-r--r--fs/fat/inode.c1
-rw-r--r--fs/freevxfs/vxfs_inode.c1
-rw-r--r--fs/fuse/inode.c1
-rw-r--r--fs/gfs2/super.c1
-rw-r--r--fs/hfs/super.c1
-rw-r--r--fs/hfsplus/super.c1
-rw-r--r--fs/hostfs/hostfs_kern.c1
-rw-r--r--fs/hpfs/super.c1
-rw-r--r--fs/hppfs/hppfs.c1
-rw-r--r--fs/hugetlbfs/inode.c1
-rw-r--r--fs/inode.c3
-rw-r--r--fs/isofs/inode.c1
-rw-r--r--fs/jffs2/super.c1
-rw-r--r--fs/jfs/super.c1
-rw-r--r--fs/logfs/inode.c1
-rw-r--r--fs/minix/inode.c1
-rw-r--r--fs/ncpfs/inode.c1
-rw-r--r--fs/nfs/inode.c1
-rw-r--r--fs/nilfs2/super.c2
-rw-r--r--fs/ntfs/inode.c1
-rw-r--r--fs/ocfs2/dlmfs/dlmfs.c1
-rw-r--r--fs/ocfs2/super.c1
-rw-r--r--fs/openpromfs/inode.c1
-rw-r--r--fs/proc/inode.c1
-rw-r--r--fs/qnx4/inode.c1
-rw-r--r--fs/reiserfs/super.c1
-rw-r--r--fs/romfs/super.c1
-rw-r--r--fs/squashfs/super.c1
-rw-r--r--fs/sysv/inode.c1
-rw-r--r--fs/ubifs/super.c1
-rw-r--r--fs/udf/super.c1
-rw-r--r--fs/ufs/super.c1
-rw-r--r--fs/xfs/xfs_iget.c1
-rw-r--r--ipc/mqueue.c1
-rw-r--r--mm/shmem.c1
-rw-r--r--net/sunrpc/rpc_pipe.c1
53 files changed, 1 insertions, 55 deletions
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c
index e481f6b9a789..d85f8cbdc8b3 100644
--- a/arch/powerpc/platforms/cell/spufs/inode.c
+++ b/arch/powerpc/platforms/cell/spufs/inode.c
@@ -74,7 +74,6 @@ spufs_alloc_inode(struct super_block *sb)
74static void spufs_i_callback(struct rcu_head *head) 74static void spufs_i_callback(struct rcu_head *head)
75{ 75{
76 struct inode *inode = container_of(head, struct inode, i_rcu); 76 struct inode *inode = container_of(head, struct inode, i_rcu);
77 INIT_LIST_HEAD(&inode->i_dentry);
78 kmem_cache_free(spufs_inode_cache, SPUFS_I(inode)); 77 kmem_cache_free(spufs_inode_cache, SPUFS_I(inode));
79} 78}
80 79
diff --git a/drivers/staging/pohmelfs/inode.c b/drivers/staging/pohmelfs/inode.c
index 7a1955583b7d..6c12516826ad 100644
--- a/drivers/staging/pohmelfs/inode.c
+++ b/drivers/staging/pohmelfs/inode.c
@@ -830,7 +830,6 @@ const struct address_space_operations pohmelfs_aops = {
830static void pohmelfs_i_callback(struct rcu_head *head) 830static void pohmelfs_i_callback(struct rcu_head *head)
831{ 831{
832 struct inode *inode = container_of(head, struct inode, i_rcu); 832 struct inode *inode = container_of(head, struct inode, i_rcu);
833 INIT_LIST_HEAD(&inode->i_dentry);
834 kmem_cache_free(pohmelfs_inode_cache, POHMELFS_I(inode)); 833 kmem_cache_free(pohmelfs_inode_cache, POHMELFS_I(inode));
835} 834}
836 835
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index 879ed8851737..2310cc9eb402 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -251,7 +251,6 @@ struct inode *v9fs_alloc_inode(struct super_block *sb)
251static void v9fs_i_callback(struct rcu_head *head) 251static void v9fs_i_callback(struct rcu_head *head)
252{ 252{
253 struct inode *inode = container_of(head, struct inode, i_rcu); 253 struct inode *inode = container_of(head, struct inode, i_rcu);
254 INIT_LIST_HEAD(&inode->i_dentry);
255 kmem_cache_free(v9fs_inode_cache, V9FS_I(inode)); 254 kmem_cache_free(v9fs_inode_cache, V9FS_I(inode));
256} 255}
257 256
diff --git a/fs/affs/super.c b/fs/affs/super.c
index b31507d0f9b9..8ba73fed7964 100644
--- a/fs/affs/super.c
+++ b/fs/affs/super.c
@@ -98,7 +98,6 @@ static struct inode *affs_alloc_inode(struct super_block *sb)
98static void affs_i_callback(struct rcu_head *head) 98static void affs_i_callback(struct rcu_head *head)
99{ 99{
100 struct inode *inode = container_of(head, struct inode, i_rcu); 100 struct inode *inode = container_of(head, struct inode, i_rcu);
101 INIT_LIST_HEAD(&inode->i_dentry);
102 kmem_cache_free(affs_inode_cachep, AFFS_I(inode)); 101 kmem_cache_free(affs_inode_cachep, AFFS_I(inode));
103} 102}
104 103
diff --git a/fs/afs/super.c b/fs/afs/super.c
index 356dcf0929e8..983ec59fc80d 100644
--- a/fs/afs/super.c
+++ b/fs/afs/super.c
@@ -495,7 +495,6 @@ static void afs_i_callback(struct rcu_head *head)
495{ 495{
496 struct inode *inode = container_of(head, struct inode, i_rcu); 496 struct inode *inode = container_of(head, struct inode, i_rcu);
497 struct afs_vnode *vnode = AFS_FS_I(inode); 497 struct afs_vnode *vnode = AFS_FS_I(inode);
498 INIT_LIST_HEAD(&inode->i_dentry);
499 kmem_cache_free(afs_inode_cachep, vnode); 498 kmem_cache_free(afs_inode_cachep, vnode);
500} 499}
501 500
diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c
index 8342ca67abcd..6e6d536767fe 100644
--- a/fs/befs/linuxvfs.c
+++ b/fs/befs/linuxvfs.c
@@ -286,7 +286,6 @@ befs_alloc_inode(struct super_block *sb)
286static void befs_i_callback(struct rcu_head *head) 286static void befs_i_callback(struct rcu_head *head)
287{ 287{
288 struct inode *inode = container_of(head, struct inode, i_rcu); 288 struct inode *inode = container_of(head, struct inode, i_rcu);
289 INIT_LIST_HEAD(&inode->i_dentry);
290 kmem_cache_free(befs_inode_cachep, BEFS_I(inode)); 289 kmem_cache_free(befs_inode_cachep, BEFS_I(inode));
291} 290}
292 291
diff --git a/fs/bfs/inode.c b/fs/bfs/inode.c
index 697af5bf70b3..b0391bc402b1 100644
--- a/fs/bfs/inode.c
+++ b/fs/bfs/inode.c
@@ -251,7 +251,6 @@ static struct inode *bfs_alloc_inode(struct super_block *sb)
251static void bfs_i_callback(struct rcu_head *head) 251static void bfs_i_callback(struct rcu_head *head)
252{ 252{
253 struct inode *inode = container_of(head, struct inode, i_rcu); 253 struct inode *inode = container_of(head, struct inode, i_rcu);
254 INIT_LIST_HEAD(&inode->i_dentry);
255 kmem_cache_free(bfs_inode_cachep, BFS_I(inode)); 254 kmem_cache_free(bfs_inode_cachep, BFS_I(inode));
256} 255}
257 256
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 4b322a58a513..7866cdd9fe70 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -425,7 +425,6 @@ static void bdev_i_callback(struct rcu_head *head)
425 struct inode *inode = container_of(head, struct inode, i_rcu); 425 struct inode *inode = container_of(head, struct inode, i_rcu);
426 struct bdev_inode *bdi = BDEV_I(inode); 426 struct bdev_inode *bdi = BDEV_I(inode);
427 427
428 INIT_LIST_HEAD(&inode->i_dentry);
429 kmem_cache_free(bdev_cachep, bdi); 428 kmem_cache_free(bdev_cachep, bdi);
430} 429}
431 430
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index fd1a06df5bc6..f8ff9738558a 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -6761,7 +6761,6 @@ struct inode *btrfs_alloc_inode(struct super_block *sb)
6761static void btrfs_i_callback(struct rcu_head *head) 6761static void btrfs_i_callback(struct rcu_head *head)
6762{ 6762{
6763 struct inode *inode = container_of(head, struct inode, i_rcu); 6763 struct inode *inode = container_of(head, struct inode, i_rcu);
6764 INIT_LIST_HEAD(&inode->i_dentry);
6765 kmem_cache_free(btrfs_inode_cachep, BTRFS_I(inode)); 6764 kmem_cache_free(btrfs_inode_cachep, BTRFS_I(inode));
6766} 6765}
6767 6766
diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c
index 87fb132fb330..25283e7a37f8 100644
--- a/fs/ceph/inode.c
+++ b/fs/ceph/inode.c
@@ -384,7 +384,6 @@ static void ceph_i_callback(struct rcu_head *head)
384 struct inode *inode = container_of(head, struct inode, i_rcu); 384 struct inode *inode = container_of(head, struct inode, i_rcu);
385 struct ceph_inode_info *ci = ceph_inode(inode); 385 struct ceph_inode_info *ci = ceph_inode(inode);
386 386
387 INIT_LIST_HEAD(&inode->i_dentry);
388 kmem_cache_free(ceph_inode_cachep, ci); 387 kmem_cache_free(ceph_inode_cachep, ci);
389} 388}
390 389
diff --git a/fs/coda/inode.c b/fs/coda/inode.c
index 871b27715465..1c08a8cd673a 100644
--- a/fs/coda/inode.c
+++ b/fs/coda/inode.c
@@ -58,7 +58,6 @@ static struct inode *coda_alloc_inode(struct super_block *sb)
58static void coda_i_callback(struct rcu_head *head) 58static void coda_i_callback(struct rcu_head *head)
59{ 59{
60 struct inode *inode = container_of(head, struct inode, i_rcu); 60 struct inode *inode = container_of(head, struct inode, i_rcu);
61 INIT_LIST_HEAD(&inode->i_dentry);
62 kmem_cache_free(coda_inode_cachep, ITOC(inode)); 61 kmem_cache_free(coda_inode_cachep, ITOC(inode));
63} 62}
64 63
diff --git a/fs/ecryptfs/super.c b/fs/ecryptfs/super.c
index dbd52d40df4c..da485f0b4d1e 100644
--- a/fs/ecryptfs/super.c
+++ b/fs/ecryptfs/super.c
@@ -69,7 +69,6 @@ static void ecryptfs_i_callback(struct rcu_head *head)
69 struct ecryptfs_inode_info *inode_info; 69 struct ecryptfs_inode_info *inode_info;
70 inode_info = ecryptfs_inode_to_private(inode); 70 inode_info = ecryptfs_inode_to_private(inode);
71 71
72 INIT_LIST_HEAD(&inode->i_dentry);
73 kmem_cache_free(ecryptfs_inode_info_cache, inode_info); 72 kmem_cache_free(ecryptfs_inode_info_cache, inode_info);
74} 73}
75 74
diff --git a/fs/efs/super.c b/fs/efs/super.c
index 0f31acb0131c..981106429a9f 100644
--- a/fs/efs/super.c
+++ b/fs/efs/super.c
@@ -68,7 +68,6 @@ static struct inode *efs_alloc_inode(struct super_block *sb)
68static void efs_i_callback(struct rcu_head *head) 68static void efs_i_callback(struct rcu_head *head)
69{ 69{
70 struct inode *inode = container_of(head, struct inode, i_rcu); 70 struct inode *inode = container_of(head, struct inode, i_rcu);
71 INIT_LIST_HEAD(&inode->i_dentry);
72 kmem_cache_free(efs_inode_cachep, INODE_INFO(inode)); 71 kmem_cache_free(efs_inode_cachep, INODE_INFO(inode));
73} 72}
74 73
diff --git a/fs/exofs/super.c b/fs/exofs/super.c
index e6085ec192d6..8addfe314dc7 100644
--- a/fs/exofs/super.c
+++ b/fs/exofs/super.c
@@ -166,7 +166,6 @@ static struct inode *exofs_alloc_inode(struct super_block *sb)
166static void exofs_i_callback(struct rcu_head *head) 166static void exofs_i_callback(struct rcu_head *head)
167{ 167{
168 struct inode *inode = container_of(head, struct inode, i_rcu); 168 struct inode *inode = container_of(head, struct inode, i_rcu);
169 INIT_LIST_HEAD(&inode->i_dentry);
170 kmem_cache_free(exofs_inode_cachep, exofs_i(inode)); 169 kmem_cache_free(exofs_inode_cachep, exofs_i(inode));
171} 170}
172 171
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index bd8ac164a3bf..67b5e752ec9d 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -173,7 +173,6 @@ static struct inode *ext2_alloc_inode(struct super_block *sb)
173static void ext2_i_callback(struct rcu_head *head) 173static void ext2_i_callback(struct rcu_head *head)
174{ 174{
175 struct inode *inode = container_of(head, struct inode, i_rcu); 175 struct inode *inode = container_of(head, struct inode, i_rcu);
176 INIT_LIST_HEAD(&inode->i_dentry);
177 kmem_cache_free(ext2_inode_cachep, EXT2_I(inode)); 176 kmem_cache_free(ext2_inode_cachep, EXT2_I(inode));
178} 177}
179 178
diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index 922d289aeeb3..668c931b2214 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -511,7 +511,6 @@ static int ext3_drop_inode(struct inode *inode)
511static void ext3_i_callback(struct rcu_head *head) 511static void ext3_i_callback(struct rcu_head *head)
512{ 512{
513 struct inode *inode = container_of(head, struct inode, i_rcu); 513 struct inode *inode = container_of(head, struct inode, i_rcu);
514 INIT_LIST_HEAD(&inode->i_dentry);
515 kmem_cache_free(ext3_inode_cachep, EXT3_I(inode)); 514 kmem_cache_free(ext3_inode_cachep, EXT3_I(inode));
516} 515}
517 516
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 3e1329e2f826..2a1a9e63cffa 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -930,7 +930,6 @@ static int ext4_drop_inode(struct inode *inode)
930static void ext4_i_callback(struct rcu_head *head) 930static void ext4_i_callback(struct rcu_head *head)
931{ 931{
932 struct inode *inode = container_of(head, struct inode, i_rcu); 932 struct inode *inode = container_of(head, struct inode, i_rcu);
933 INIT_LIST_HEAD(&inode->i_dentry);
934 kmem_cache_free(ext4_inode_cachep, EXT4_I(inode)); 933 kmem_cache_free(ext4_inode_cachep, EXT4_I(inode));
935} 934}
936 935
diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index 808cac7edcfb..ef44e5f98ced 100644
--- a/fs/fat/inode.c
+++ b/fs/fat/inode.c
@@ -518,7 +518,6 @@ static struct inode *fat_alloc_inode(struct super_block *sb)
518static void fat_i_callback(struct rcu_head *head) 518static void fat_i_callback(struct rcu_head *head)
519{ 519{
520 struct inode *inode = container_of(head, struct inode, i_rcu); 520 struct inode *inode = container_of(head, struct inode, i_rcu);
521 INIT_LIST_HEAD(&inode->i_dentry);
522 kmem_cache_free(fat_inode_cachep, MSDOS_I(inode)); 521 kmem_cache_free(fat_inode_cachep, MSDOS_I(inode));
523} 522}
524 523
diff --git a/fs/freevxfs/vxfs_inode.c b/fs/freevxfs/vxfs_inode.c
index 7b2af5abe2fa..41ef6e715d2f 100644
--- a/fs/freevxfs/vxfs_inode.c
+++ b/fs/freevxfs/vxfs_inode.c
@@ -340,7 +340,6 @@ vxfs_iget(struct super_block *sbp, ino_t ino)
340static void vxfs_i_callback(struct rcu_head *head) 340static void vxfs_i_callback(struct rcu_head *head)
341{ 341{
342 struct inode *inode = container_of(head, struct inode, i_rcu); 342 struct inode *inode = container_of(head, struct inode, i_rcu);
343 INIT_LIST_HEAD(&inode->i_dentry);
344 kmem_cache_free(vxfs_inode_cachep, inode->i_private); 343 kmem_cache_free(vxfs_inode_cachep, inode->i_private);
345} 344}
346 345
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index aa83109b9431..3d3622a1ceac 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -107,7 +107,6 @@ static struct inode *fuse_alloc_inode(struct super_block *sb)
107static void fuse_i_callback(struct rcu_head *head) 107static void fuse_i_callback(struct rcu_head *head)
108{ 108{
109 struct inode *inode = container_of(head, struct inode, i_rcu); 109 struct inode *inode = container_of(head, struct inode, i_rcu);
110 INIT_LIST_HEAD(&inode->i_dentry);
111 kmem_cache_free(fuse_inode_cachep, inode); 110 kmem_cache_free(fuse_inode_cachep, inode);
112} 111}
113 112
diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c
index 71e420989f77..9e89d94be003 100644
--- a/fs/gfs2/super.c
+++ b/fs/gfs2/super.c
@@ -1582,7 +1582,6 @@ static struct inode *gfs2_alloc_inode(struct super_block *sb)
1582static void gfs2_i_callback(struct rcu_head *head) 1582static void gfs2_i_callback(struct rcu_head *head)
1583{ 1583{
1584 struct inode *inode = container_of(head, struct inode, i_rcu); 1584 struct inode *inode = container_of(head, struct inode, i_rcu);
1585 INIT_LIST_HEAD(&inode->i_dentry);
1586 kmem_cache_free(gfs2_inode_cachep, inode); 1585 kmem_cache_free(gfs2_inode_cachep, inode);
1587} 1586}
1588 1587
diff --git a/fs/hfs/super.c b/fs/hfs/super.c
index 1b55f704fb22..32dc2fbb26d5 100644
--- a/fs/hfs/super.c
+++ b/fs/hfs/super.c
@@ -170,7 +170,6 @@ static struct inode *hfs_alloc_inode(struct super_block *sb)
170static void hfs_i_callback(struct rcu_head *head) 170static void hfs_i_callback(struct rcu_head *head)
171{ 171{
172 struct inode *inode = container_of(head, struct inode, i_rcu); 172 struct inode *inode = container_of(head, struct inode, i_rcu);
173 INIT_LIST_HEAD(&inode->i_dentry);
174 kmem_cache_free(hfs_inode_cachep, HFS_I(inode)); 173 kmem_cache_free(hfs_inode_cachep, HFS_I(inode));
175} 174}
176 175
diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c
index d24a9b666a23..edf0a801446b 100644
--- a/fs/hfsplus/super.c
+++ b/fs/hfsplus/super.c
@@ -558,7 +558,6 @@ static void hfsplus_i_callback(struct rcu_head *head)
558{ 558{
559 struct inode *inode = container_of(head, struct inode, i_rcu); 559 struct inode *inode = container_of(head, struct inode, i_rcu);
560 560
561 INIT_LIST_HEAD(&inode->i_dentry);
562 kmem_cache_free(hfsplus_inode_cachep, HFSPLUS_I(inode)); 561 kmem_cache_free(hfsplus_inode_cachep, HFSPLUS_I(inode));
563} 562}
564 563
diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
index 2f72da5ae686..343ea632b97c 100644
--- a/fs/hostfs/hostfs_kern.c
+++ b/fs/hostfs/hostfs_kern.c
@@ -250,7 +250,6 @@ static void hostfs_evict_inode(struct inode *inode)
250static void hostfs_i_callback(struct rcu_head *head) 250static void hostfs_i_callback(struct rcu_head *head)
251{ 251{
252 struct inode *inode = container_of(head, struct inode, i_rcu); 252 struct inode *inode = container_of(head, struct inode, i_rcu);
253 INIT_LIST_HEAD(&inode->i_dentry);
254 kfree(HOSTFS_I(inode)); 253 kfree(HOSTFS_I(inode));
255} 254}
256 255
diff --git a/fs/hpfs/super.c b/fs/hpfs/super.c
index 98580a3b5005..3690467c944e 100644
--- a/fs/hpfs/super.c
+++ b/fs/hpfs/super.c
@@ -181,7 +181,6 @@ static struct inode *hpfs_alloc_inode(struct super_block *sb)
181static void hpfs_i_callback(struct rcu_head *head) 181static void hpfs_i_callback(struct rcu_head *head)
182{ 182{
183 struct inode *inode = container_of(head, struct inode, i_rcu); 183 struct inode *inode = container_of(head, struct inode, i_rcu);
184 INIT_LIST_HEAD(&inode->i_dentry);
185 kmem_cache_free(hpfs_inode_cachep, hpfs_i(inode)); 184 kmem_cache_free(hpfs_inode_cachep, hpfs_i(inode));
186} 185}
187 186
diff --git a/fs/hppfs/hppfs.c b/fs/hppfs/hppfs.c
index f590b1160c6c..30883a7adacb 100644
--- a/fs/hppfs/hppfs.c
+++ b/fs/hppfs/hppfs.c
@@ -622,7 +622,6 @@ void hppfs_evict_inode(struct inode *ino)
622static void hppfs_i_callback(struct rcu_head *head) 622static void hppfs_i_callback(struct rcu_head *head)
623{ 623{
624 struct inode *inode = container_of(head, struct inode, i_rcu); 624 struct inode *inode = container_of(head, struct inode, i_rcu);
625 INIT_LIST_HEAD(&inode->i_dentry);
626 kfree(HPPFS_I(inode)); 625 kfree(HPPFS_I(inode));
627} 626}
628 627
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index 0be5a78598d0..9c4ec538725b 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -666,7 +666,6 @@ static struct inode *hugetlbfs_alloc_inode(struct super_block *sb)
666static void hugetlbfs_i_callback(struct rcu_head *head) 666static void hugetlbfs_i_callback(struct rcu_head *head)
667{ 667{
668 struct inode *inode = container_of(head, struct inode, i_rcu); 668 struct inode *inode = container_of(head, struct inode, i_rcu);
669 INIT_LIST_HEAD(&inode->i_dentry);
670 kmem_cache_free(hugetlbfs_inode_cachep, HUGETLBFS_I(inode)); 669 kmem_cache_free(hugetlbfs_inode_cachep, HUGETLBFS_I(inode));
671} 670}
672 671
diff --git a/fs/inode.c b/fs/inode.c
index 4fda5ee85518..24d02907e196 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -191,6 +191,7 @@ int inode_init_always(struct super_block *sb, struct inode *inode)
191 } 191 }
192 inode->i_private = NULL; 192 inode->i_private = NULL;
193 inode->i_mapping = mapping; 193 inode->i_mapping = mapping;
194 INIT_LIST_HEAD(&inode->i_dentry); /* buggered by rcu freeing */
194#ifdef CONFIG_FS_POSIX_ACL 195#ifdef CONFIG_FS_POSIX_ACL
195 inode->i_acl = inode->i_default_acl = ACL_NOT_CACHED; 196 inode->i_acl = inode->i_default_acl = ACL_NOT_CACHED;
196#endif 197#endif
@@ -254,7 +255,6 @@ EXPORT_SYMBOL(__destroy_inode);
254static void i_callback(struct rcu_head *head) 255static void i_callback(struct rcu_head *head)
255{ 256{
256 struct inode *inode = container_of(head, struct inode, i_rcu); 257 struct inode *inode = container_of(head, struct inode, i_rcu);
257 INIT_LIST_HEAD(&inode->i_dentry);
258 kmem_cache_free(inode_cachep, inode); 258 kmem_cache_free(inode_cachep, inode);
259} 259}
260 260
@@ -290,7 +290,6 @@ void inode_init_once(struct inode *inode)
290{ 290{
291 memset(inode, 0, sizeof(*inode)); 291 memset(inode, 0, sizeof(*inode));
292 INIT_HLIST_NODE(&inode->i_hash); 292 INIT_HLIST_NODE(&inode->i_hash);
293 INIT_LIST_HEAD(&inode->i_dentry);
294 INIT_LIST_HEAD(&inode->i_devices); 293 INIT_LIST_HEAD(&inode->i_devices);
295 INIT_LIST_HEAD(&inode->i_wb_list); 294 INIT_LIST_HEAD(&inode->i_wb_list);
296 INIT_LIST_HEAD(&inode->i_lru); 295 INIT_LIST_HEAD(&inode->i_lru);
diff --git a/fs/isofs/inode.c b/fs/isofs/inode.c
index f950059525fc..b71f6311a337 100644
--- a/fs/isofs/inode.c
+++ b/fs/isofs/inode.c
@@ -85,7 +85,6 @@ static struct inode *isofs_alloc_inode(struct super_block *sb)
85static void isofs_i_callback(struct rcu_head *head) 85static void isofs_i_callback(struct rcu_head *head)
86{ 86{
87 struct inode *inode = container_of(head, struct inode, i_rcu); 87 struct inode *inode = container_of(head, struct inode, i_rcu);
88 INIT_LIST_HEAD(&inode->i_dentry);
89 kmem_cache_free(isofs_inode_cachep, ISOFS_I(inode)); 88 kmem_cache_free(isofs_inode_cachep, ISOFS_I(inode));
90} 89}
91 90
diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c
index e7e974454115..804e1292d63e 100644
--- a/fs/jffs2/super.c
+++ b/fs/jffs2/super.c
@@ -45,7 +45,6 @@ static struct inode *jffs2_alloc_inode(struct super_block *sb)
45static void jffs2_i_callback(struct rcu_head *head) 45static void jffs2_i_callback(struct rcu_head *head)
46{ 46{
47 struct inode *inode = container_of(head, struct inode, i_rcu); 47 struct inode *inode = container_of(head, struct inode, i_rcu);
48 INIT_LIST_HEAD(&inode->i_dentry);
49 kmem_cache_free(jffs2_inode_cachep, JFFS2_INODE_INFO(inode)); 48 kmem_cache_free(jffs2_inode_cachep, JFFS2_INODE_INFO(inode));
50} 49}
51 50
diff --git a/fs/jfs/super.c b/fs/jfs/super.c
index a44eff076c17..1b8f4ca29adf 100644
--- a/fs/jfs/super.c
+++ b/fs/jfs/super.c
@@ -119,7 +119,6 @@ static void jfs_i_callback(struct rcu_head *head)
119{ 119{
120 struct inode *inode = container_of(head, struct inode, i_rcu); 120 struct inode *inode = container_of(head, struct inode, i_rcu);
121 struct jfs_inode_info *ji = JFS_IP(inode); 121 struct jfs_inode_info *ji = JFS_IP(inode);
122 INIT_LIST_HEAD(&inode->i_dentry);
123 kmem_cache_free(jfs_inode_cachep, ji); 122 kmem_cache_free(jfs_inode_cachep, ji);
124} 123}
125 124
diff --git a/fs/logfs/inode.c b/fs/logfs/inode.c
index 7e441ad5f792..4d1af42bfd24 100644
--- a/fs/logfs/inode.c
+++ b/fs/logfs/inode.c
@@ -144,7 +144,6 @@ struct inode *logfs_safe_iget(struct super_block *sb, ino_t ino, int *is_cached)
144static void logfs_i_callback(struct rcu_head *head) 144static void logfs_i_callback(struct rcu_head *head)
145{ 145{
146 struct inode *inode = container_of(head, struct inode, i_rcu); 146 struct inode *inode = container_of(head, struct inode, i_rcu);
147 INIT_LIST_HEAD(&inode->i_dentry);
148 kmem_cache_free(logfs_inode_cache, logfs_inode(inode)); 147 kmem_cache_free(logfs_inode_cache, logfs_inode(inode));
149} 148}
150 149
diff --git a/fs/minix/inode.c b/fs/minix/inode.c
index 1d9e33966db0..c811c19d31be 100644
--- a/fs/minix/inode.c
+++ b/fs/minix/inode.c
@@ -71,7 +71,6 @@ static struct inode *minix_alloc_inode(struct super_block *sb)
71static void minix_i_callback(struct rcu_head *head) 71static void minix_i_callback(struct rcu_head *head)
72{ 72{
73 struct inode *inode = container_of(head, struct inode, i_rcu); 73 struct inode *inode = container_of(head, struct inode, i_rcu);
74 INIT_LIST_HEAD(&inode->i_dentry);
75 kmem_cache_free(minix_inode_cachep, minix_i(inode)); 74 kmem_cache_free(minix_inode_cachep, minix_i(inode));
76} 75}
77 76
diff --git a/fs/ncpfs/inode.c b/fs/ncpfs/inode.c
index cbd1a61c110a..f3f07cd392b3 100644
--- a/fs/ncpfs/inode.c
+++ b/fs/ncpfs/inode.c
@@ -60,7 +60,6 @@ static struct inode *ncp_alloc_inode(struct super_block *sb)
60static void ncp_i_callback(struct rcu_head *head) 60static void ncp_i_callback(struct rcu_head *head)
61{ 61{
62 struct inode *inode = container_of(head, struct inode, i_rcu); 62 struct inode *inode = container_of(head, struct inode, i_rcu);
63 INIT_LIST_HEAD(&inode->i_dentry);
64 kmem_cache_free(ncp_inode_cachep, NCP_FINFO(inode)); 63 kmem_cache_free(ncp_inode_cachep, NCP_FINFO(inode));
65} 64}
66 65
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
index efb66db04f99..6f00086e340f 100644
--- a/fs/nfs/inode.c
+++ b/fs/nfs/inode.c
@@ -1464,7 +1464,6 @@ struct inode *nfs_alloc_inode(struct super_block *sb)
1464static void nfs_i_callback(struct rcu_head *head) 1464static void nfs_i_callback(struct rcu_head *head)
1465{ 1465{
1466 struct inode *inode = container_of(head, struct inode, i_rcu); 1466 struct inode *inode = container_of(head, struct inode, i_rcu);
1467 INIT_LIST_HEAD(&inode->i_dentry);
1468 kmem_cache_free(nfs_inode_cachep, NFS_I(inode)); 1467 kmem_cache_free(nfs_inode_cachep, NFS_I(inode));
1469} 1468}
1470 1469
diff --git a/fs/nilfs2/super.c b/fs/nilfs2/super.c
index 8351c44a7320..5356c7169d50 100644
--- a/fs/nilfs2/super.c
+++ b/fs/nilfs2/super.c
@@ -175,8 +175,6 @@ static void nilfs_i_callback(struct rcu_head *head)
175 struct inode *inode = container_of(head, struct inode, i_rcu); 175 struct inode *inode = container_of(head, struct inode, i_rcu);
176 struct nilfs_mdt_info *mdi = NILFS_MDT(inode); 176 struct nilfs_mdt_info *mdi = NILFS_MDT(inode);
177 177
178 INIT_LIST_HEAD(&inode->i_dentry);
179
180 if (mdi) { 178 if (mdi) {
181 kfree(mdi->mi_bgl); /* kfree(NULL) is safe */ 179 kfree(mdi->mi_bgl); /* kfree(NULL) is safe */
182 kfree(mdi); 180 kfree(mdi);
diff --git a/fs/ntfs/inode.c b/fs/ntfs/inode.c
index 97e2dacbc867..fea40bb6fb68 100644
--- a/fs/ntfs/inode.c
+++ b/fs/ntfs/inode.c
@@ -335,7 +335,6 @@ struct inode *ntfs_alloc_big_inode(struct super_block *sb)
335static void ntfs_i_callback(struct rcu_head *head) 335static void ntfs_i_callback(struct rcu_head *head)
336{ 336{
337 struct inode *inode = container_of(head, struct inode, i_rcu); 337 struct inode *inode = container_of(head, struct inode, i_rcu);
338 INIT_LIST_HEAD(&inode->i_dentry);
339 kmem_cache_free(ntfs_big_inode_cache, NTFS_I(inode)); 338 kmem_cache_free(ntfs_big_inode_cache, NTFS_I(inode));
340} 339}
341 340
diff --git a/fs/ocfs2/dlmfs/dlmfs.c b/fs/ocfs2/dlmfs/dlmfs.c
index b42076797049..a9f007de1da8 100644
--- a/fs/ocfs2/dlmfs/dlmfs.c
+++ b/fs/ocfs2/dlmfs/dlmfs.c
@@ -354,7 +354,6 @@ static struct inode *dlmfs_alloc_inode(struct super_block *sb)
354static void dlmfs_i_callback(struct rcu_head *head) 354static void dlmfs_i_callback(struct rcu_head *head)
355{ 355{
356 struct inode *inode = container_of(head, struct inode, i_rcu); 356 struct inode *inode = container_of(head, struct inode, i_rcu);
357 INIT_LIST_HEAD(&inode->i_dentry);
358 kmem_cache_free(dlmfs_inode_cache, DLMFS_I(inode)); 357 kmem_cache_free(dlmfs_inode_cache, DLMFS_I(inode));
359} 358}
360 359
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
index 4994f8b0e604..c05ff25c356c 100644
--- a/fs/ocfs2/super.c
+++ b/fs/ocfs2/super.c
@@ -569,7 +569,6 @@ static struct inode *ocfs2_alloc_inode(struct super_block *sb)
569static void ocfs2_i_callback(struct rcu_head *head) 569static void ocfs2_i_callback(struct rcu_head *head)
570{ 570{
571 struct inode *inode = container_of(head, struct inode, i_rcu); 571 struct inode *inode = container_of(head, struct inode, i_rcu);
572 INIT_LIST_HEAD(&inode->i_dentry);
573 kmem_cache_free(ocfs2_inode_cachep, OCFS2_I(inode)); 572 kmem_cache_free(ocfs2_inode_cachep, OCFS2_I(inode));
574} 573}
575 574
diff --git a/fs/openpromfs/inode.c b/fs/openpromfs/inode.c
index e4e0ff7962e2..a88c03bc749d 100644
--- a/fs/openpromfs/inode.c
+++ b/fs/openpromfs/inode.c
@@ -346,7 +346,6 @@ static struct inode *openprom_alloc_inode(struct super_block *sb)
346static void openprom_i_callback(struct rcu_head *head) 346static void openprom_i_callback(struct rcu_head *head)
347{ 347{
348 struct inode *inode = container_of(head, struct inode, i_rcu); 348 struct inode *inode = container_of(head, struct inode, i_rcu);
349 INIT_LIST_HEAD(&inode->i_dentry);
350 kmem_cache_free(op_inode_cachep, OP_I(inode)); 349 kmem_cache_free(op_inode_cachep, OP_I(inode));
351} 350}
352 351
diff --git a/fs/proc/inode.c b/fs/proc/inode.c
index 7737c5468a40..51a176622b8f 100644
--- a/fs/proc/inode.c
+++ b/fs/proc/inode.c
@@ -77,7 +77,6 @@ static struct inode *proc_alloc_inode(struct super_block *sb)
77static void proc_i_callback(struct rcu_head *head) 77static void proc_i_callback(struct rcu_head *head)
78{ 78{
79 struct inode *inode = container_of(head, struct inode, i_rcu); 79 struct inode *inode = container_of(head, struct inode, i_rcu);
80 INIT_LIST_HEAD(&inode->i_dentry);
81 kmem_cache_free(proc_inode_cachep, PROC_I(inode)); 80 kmem_cache_free(proc_inode_cachep, PROC_I(inode));
82} 81}
83 82
diff --git a/fs/qnx4/inode.c b/fs/qnx4/inode.c
index 3bdd21418432..b90c7967fcae 100644
--- a/fs/qnx4/inode.c
+++ b/fs/qnx4/inode.c
@@ -427,7 +427,6 @@ static struct inode *qnx4_alloc_inode(struct super_block *sb)
427static void qnx4_i_callback(struct rcu_head *head) 427static void qnx4_i_callback(struct rcu_head *head)
428{ 428{
429 struct inode *inode = container_of(head, struct inode, i_rcu); 429 struct inode *inode = container_of(head, struct inode, i_rcu);
430 INIT_LIST_HEAD(&inode->i_dentry);
431 kmem_cache_free(qnx4_inode_cachep, qnx4_i(inode)); 430 kmem_cache_free(qnx4_inode_cachep, qnx4_i(inode));
432} 431}
433 432
diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
index 14363b96b6af..5a4cae7efc43 100644
--- a/fs/reiserfs/super.c
+++ b/fs/reiserfs/super.c
@@ -532,7 +532,6 @@ static struct inode *reiserfs_alloc_inode(struct super_block *sb)
532static void reiserfs_i_callback(struct rcu_head *head) 532static void reiserfs_i_callback(struct rcu_head *head)
533{ 533{
534 struct inode *inode = container_of(head, struct inode, i_rcu); 534 struct inode *inode = container_of(head, struct inode, i_rcu);
535 INIT_LIST_HEAD(&inode->i_dentry);
536 kmem_cache_free(reiserfs_inode_cachep, REISERFS_I(inode)); 535 kmem_cache_free(reiserfs_inode_cachep, REISERFS_I(inode));
537} 536}
538 537
diff --git a/fs/romfs/super.c b/fs/romfs/super.c
index 8b4089f30408..bb36ab74eb45 100644
--- a/fs/romfs/super.c
+++ b/fs/romfs/super.c
@@ -403,7 +403,6 @@ static struct inode *romfs_alloc_inode(struct super_block *sb)
403static void romfs_i_callback(struct rcu_head *head) 403static void romfs_i_callback(struct rcu_head *head)
404{ 404{
405 struct inode *inode = container_of(head, struct inode, i_rcu); 405 struct inode *inode = container_of(head, struct inode, i_rcu);
406 INIT_LIST_HEAD(&inode->i_dentry);
407 kmem_cache_free(romfs_inode_cachep, ROMFS_I(inode)); 406 kmem_cache_free(romfs_inode_cachep, ROMFS_I(inode));
408} 407}
409 408
diff --git a/fs/squashfs/super.c b/fs/squashfs/super.c
index 2da1715452ac..d0858c2d9a47 100644
--- a/fs/squashfs/super.c
+++ b/fs/squashfs/super.c
@@ -464,7 +464,6 @@ static struct inode *squashfs_alloc_inode(struct super_block *sb)
464static void squashfs_i_callback(struct rcu_head *head) 464static void squashfs_i_callback(struct rcu_head *head)
465{ 465{
466 struct inode *inode = container_of(head, struct inode, i_rcu); 466 struct inode *inode = container_of(head, struct inode, i_rcu);
467 INIT_LIST_HEAD(&inode->i_dentry);
468 kmem_cache_free(squashfs_inode_cachep, squashfs_i(inode)); 467 kmem_cache_free(squashfs_inode_cachep, squashfs_i(inode));
469} 468}
470 469
diff --git a/fs/sysv/inode.c b/fs/sysv/inode.c
index 25ffb3e9a3f8..3da5ce25faf0 100644
--- a/fs/sysv/inode.c
+++ b/fs/sysv/inode.c
@@ -336,7 +336,6 @@ static struct inode *sysv_alloc_inode(struct super_block *sb)
336static void sysv_i_callback(struct rcu_head *head) 336static void sysv_i_callback(struct rcu_head *head)
337{ 337{
338 struct inode *inode = container_of(head, struct inode, i_rcu); 338 struct inode *inode = container_of(head, struct inode, i_rcu);
339 INIT_LIST_HEAD(&inode->i_dentry);
340 kmem_cache_free(sysv_inode_cachep, SYSV_I(inode)); 339 kmem_cache_free(sysv_inode_cachep, SYSV_I(inode));
341} 340}
342 341
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
index ae0e76bb6ebf..d93a3fadf53c 100644
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -276,7 +276,6 @@ static void ubifs_i_callback(struct rcu_head *head)
276{ 276{
277 struct inode *inode = container_of(head, struct inode, i_rcu); 277 struct inode *inode = container_of(head, struct inode, i_rcu);
278 struct ubifs_inode *ui = ubifs_inode(inode); 278 struct ubifs_inode *ui = ubifs_inode(inode);
279 INIT_LIST_HEAD(&inode->i_dentry);
280 kmem_cache_free(ubifs_inode_slab, ui); 279 kmem_cache_free(ubifs_inode_slab, ui);
281} 280}
282 281
diff --git a/fs/udf/super.c b/fs/udf/super.c
index e185253470df..7cbe669e1026 100644
--- a/fs/udf/super.c
+++ b/fs/udf/super.c
@@ -138,7 +138,6 @@ static struct inode *udf_alloc_inode(struct super_block *sb)
138static void udf_i_callback(struct rcu_head *head) 138static void udf_i_callback(struct rcu_head *head)
139{ 139{
140 struct inode *inode = container_of(head, struct inode, i_rcu); 140 struct inode *inode = container_of(head, struct inode, i_rcu);
141 INIT_LIST_HEAD(&inode->i_dentry);
142 kmem_cache_free(udf_inode_cachep, UDF_I(inode)); 141 kmem_cache_free(udf_inode_cachep, UDF_I(inode));
143} 142}
144 143
diff --git a/fs/ufs/super.c b/fs/ufs/super.c
index 3915ade6f9a8..d6961eb5b774 100644
--- a/fs/ufs/super.c
+++ b/fs/ufs/super.c
@@ -1425,7 +1425,6 @@ static struct inode *ufs_alloc_inode(struct super_block *sb)
1425static void ufs_i_callback(struct rcu_head *head) 1425static void ufs_i_callback(struct rcu_head *head)
1426{ 1426{
1427 struct inode *inode = container_of(head, struct inode, i_rcu); 1427 struct inode *inode = container_of(head, struct inode, i_rcu);
1428 INIT_LIST_HEAD(&inode->i_dentry);
1429 kmem_cache_free(ufs_inode_cachep, UFS_I(inode)); 1428 kmem_cache_free(ufs_inode_cachep, UFS_I(inode));
1430} 1429}
1431 1430
diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c
index 0fa98b1c70ea..3960a066d7ff 100644
--- a/fs/xfs/xfs_iget.c
+++ b/fs/xfs/xfs_iget.c
@@ -107,7 +107,6 @@ xfs_inode_free_callback(
107 struct inode *inode = container_of(head, struct inode, i_rcu); 107 struct inode *inode = container_of(head, struct inode, i_rcu);
108 struct xfs_inode *ip = XFS_I(inode); 108 struct xfs_inode *ip = XFS_I(inode);
109 109
110 INIT_LIST_HEAD(&inode->i_dentry);
111 kmem_zone_free(xfs_inode_zone, ip); 110 kmem_zone_free(xfs_inode_zone, ip);
112} 111}
113 112
diff --git a/ipc/mqueue.c b/ipc/mqueue.c
index 5b4293d9819d..4e0be364aa36 100644
--- a/ipc/mqueue.c
+++ b/ipc/mqueue.c
@@ -243,7 +243,6 @@ static struct inode *mqueue_alloc_inode(struct super_block *sb)
243static void mqueue_i_callback(struct rcu_head *head) 243static void mqueue_i_callback(struct rcu_head *head)
244{ 244{
245 struct inode *inode = container_of(head, struct inode, i_rcu); 245 struct inode *inode = container_of(head, struct inode, i_rcu);
246 INIT_LIST_HEAD(&inode->i_dentry);
247 kmem_cache_free(mqueue_inode_cachep, MQUEUE_I(inode)); 246 kmem_cache_free(mqueue_inode_cachep, MQUEUE_I(inode));
248} 247}
249 248
diff --git a/mm/shmem.c b/mm/shmem.c
index d6722506d2da..c58594c06569 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -2234,7 +2234,6 @@ static struct inode *shmem_alloc_inode(struct super_block *sb)
2234static void shmem_destroy_callback(struct rcu_head *head) 2234static void shmem_destroy_callback(struct rcu_head *head)
2235{ 2235{
2236 struct inode *inode = container_of(head, struct inode, i_rcu); 2236 struct inode *inode = container_of(head, struct inode, i_rcu);
2237 INIT_LIST_HEAD(&inode->i_dentry);
2238 kmem_cache_free(shmem_inode_cachep, SHMEM_I(inode)); 2237 kmem_cache_free(shmem_inode_cachep, SHMEM_I(inode));
2239} 2238}
2240 2239
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c
index bfddd68b31d3..60564bcb8067 100644
--- a/net/sunrpc/rpc_pipe.c
+++ b/net/sunrpc/rpc_pipe.c
@@ -185,7 +185,6 @@ static void
185rpc_i_callback(struct rcu_head *head) 185rpc_i_callback(struct rcu_head *head)
186{ 186{
187 struct inode *inode = container_of(head, struct inode, i_rcu); 187 struct inode *inode = container_of(head, struct inode, i_rcu);
188 INIT_LIST_HEAD(&inode->i_dentry);
189 kmem_cache_free(rpc_inode_cachep, RPC_I(inode)); 188 kmem_cache_free(rpc_inode_cachep, RPC_I(inode));
190} 189}
191 190