linux/fs/xfs
Christoph Hellwig 54e346215e vfs: fix inode_init_always calling convention
Currently inode_init_always calls into ->destroy_inode if the additional
initialization fails.  That's not only counter-intuitive because
inode_init_always did not allocate the inode structure, but in case of
XFS it's actively harmful as ->destroy_inode might delete the inode from
a radix-tree that has never been added.  This in turn might end up
deleting the inode for the same inum that has been instanciated by
another process and cause lots of cause subtile problems.

Also in the case of re-initializing a reclaimable inode in XFS it would
free an inode we still want to keep alive.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Eric Sandeen <sandeen@sandeen.net>
2009-08-07 14:38:25 -03:00
..
linux-2.6 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs 2009-07-31 12:17:37 -07:00
quota xfs: use generic Posix ACL code 2009-06-10 17:07:47 +02:00
support xfs: cleanup uuid handling 2009-03-30 10:21:31 +02:00
Kconfig xfs: use generic Posix ACL code 2009-06-10 17:07:47 +02:00
Makefile xfs: use generic Posix ACL code 2009-06-10 17:07:47 +02:00
xfs_acl.h switch xfs to generic acl caching helpers 2009-06-24 08:17:07 -04:00
xfs_ag.h xfs: introduce a per-ag inode iterator 2009-06-08 15:35:14 +02:00
xfs_alloc_btree.c [XFS] Remove the rest of the macro-to-function indirections. 2009-01-19 14:45:55 +11:00
xfs_alloc_btree.h [XFS] Always use struct xfs_btree_block instead of short / longform 2008-10-30 17:14:34 +11:00
xfs_alloc.c xfs: factor out code to find the longest free extent in the AG 2009-03-16 08:29:46 +01:00
xfs_alloc.h xfs: factor out code to find the longest free extent in the AG 2009-03-16 08:29:46 +01:00
xfs_arch.h xfs: use generic Posix ACL code 2009-06-10 17:07:47 +02:00
xfs_attr_leaf.c xfs: remove m_attroffset 2009-03-29 19:26:46 +02:00
xfs_attr_leaf.h [XFS] Remove macro-to-function indirections in attr code 2009-01-09 15:46:44 +11:00
xfs_attr_sf.h [XFS] 2008-07-28 16:58:35 +10:00
xfs_attr.c xfs: use generic Posix ACL code 2009-06-10 17:07:47 +02:00
xfs_attr.h [XFS] Move attr log alloc size calculator to another function. 2008-08-13 16:03:35 +10:00
xfs_bit.c [XFS] Use the generic bitops rather than implementing them ourselves. 2008-08-13 15:41:12 +10:00
xfs_bit.h [XFS] Remove macro-to-function indirections in the mask code 2009-01-09 15:53:54 +11:00
xfs_bmap_btree.c xfs: kill xfs_qmops 2009-06-08 15:33:32 +02:00
xfs_bmap_btree.h [XFS] Remove the rest of the macro-to-function indirections. 2009-01-19 14:45:55 +11:00
xfs_bmap.c xfs: fix freeing memory in xfs_getbmap() 2009-06-12 10:26:52 -05:00
xfs_bmap.h xfs: remove m_attroffset 2009-03-29 19:26:46 +02:00
xfs_btree_trace.c [XFS] make btree tracing generic 2008-10-30 16:58:50 +11:00
xfs_btree_trace.h [XFS] make btree tracing generic 2008-10-30 16:58:50 +11:00
xfs_btree.c xfs: fix various typos 2009-03-29 09:55:42 +02:00
xfs_btree.h xfs: fix various typos 2009-03-29 09:55:42 +02:00
xfs_buf_item.c [XFS] Remove XFS_BUF_SHUT() and friends 2008-12-22 17:52:58 +11:00
xfs_buf_item.h [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_da_btree.c xfs: remove uchar_t/ushort_t/uint_t/ulong_t types 2009-02-09 08:37:39 +01:00
xfs_da_btree.h xfs: fix various typos 2009-03-29 09:55:42 +02:00
xfs_dfrag.c xfs: fix double unlock in xfs_swap_extents() 2009-06-01 22:59:29 -05:00
xfs_dfrag.h [XFS] Move copy_from_user calls out of ioctl helpers into ioctl switch. 2008-12-02 17:08:01 +11:00
xfs_dinode.h xfs: remove m_litino 2009-03-29 09:51:14 +02:00
xfs_dir2_block.c xfs: kill ino64 mount option 2009-03-29 09:51:08 +02:00
xfs_dir2_block.h [XFS] use filldir internally 2007-10-15 16:49:49 +10:00
xfs_dir2_data.c [XFS] Name operation vector for hash and compare 2008-07-28 16:58:36 +10:00
xfs_dir2_data.h xfs: fix various typos 2009-03-29 09:55:42 +02:00
xfs_dir2_leaf.c xfs: kill ino64 mount option 2009-03-29 09:51:08 +02:00
xfs_dir2_leaf.h [XFS] use filldir internally 2007-10-15 16:49:49 +10:00
xfs_dir2_node.c xfs: fix various typos 2009-03-29 09:55:42 +02:00
xfs_dir2_node.h [XFS] Reduce shouting by removing unnecessary macros from dir2 code. 2007-07-14 15:37:02 +10:00
xfs_dir2_sf.c xfs: kill ino64 mount option 2009-03-29 09:51:08 +02:00
xfs_dir2_sf.h [XFS] kill xfs_dinode_core_t 2008-12-01 11:37:35 +11:00
xfs_dir2_trace.c [XFS] Add op_flags field and helpers to xfs_da_args 2008-07-28 16:58:37 +10:00
xfs_dir2_trace.h
xfs_dir2.c xfs: move declaration to header file 2009-03-06 17:20:15 -06:00
xfs_dir2.h [XFS] Return case-insensitive match for dentry cache 2008-07-28 16:58:40 +10:00
xfs_dmapi.h removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
xfs_dmops.c [XFS] kill struct xfs_mount_args 2008-10-30 17:53:24 +11:00
xfs_error.c [XFS] avoid memory allocations in xfs_fs_vcmn_err 2008-12-22 18:02:01 +11:00
xfs_error.h [XFS] avoid memory allocations in xfs_fs_vcmn_err 2008-12-22 18:02:01 +11:00
xfs_extfree_item.c [XFS] Finish removing the mount pointer from the AIL API 2008-10-30 17:39:58 +11:00
xfs_extfree_item.h [XFS] remove always-true #ifndef HAVE_FORMAT32 tests 2009-01-22 14:07:31 +11:00
xfs_filestream.c xfs: split xfs_sync_inodes 2009-06-08 15:35:48 +02:00
xfs_filestream.h [XFS] Concurrent Multi-File Data Streams 2007-07-14 15:40:53 +10:00
xfs_fs.h xfs: update max log size 2009-06-08 15:32:59 +02:00
xfs_fsops.c xfs: fix overflow in xfs_growfs_data_private 2009-06-01 22:59:38 -05:00
xfs_fsops.h filesystem freeze: add error handling of write_super_lockfs/unlockfs 2009-01-09 16:54:42 -08:00
xfs_ialloc_btree.c xfs: fix various typos 2009-03-29 09:55:42 +02:00
xfs_ialloc_btree.h xfs: remove superflous inobt macros 2009-02-09 08:37:14 +01:00
xfs_ialloc.c xfs: fix various typos 2009-03-29 09:55:42 +02:00
xfs_ialloc.h [XFS] Remove the rest of the macro-to-function indirections. 2009-01-19 14:45:55 +11:00
xfs_iget.c vfs: fix inode_init_always calling convention 2009-08-07 14:38:25 -03:00
xfs_inode_item.c [XFS] embededd struct xfs_imap into xfs_inode 2008-12-01 11:38:08 +11:00
xfs_inode_item.h [XFS] remove always-true #ifndef HAVE_FORMAT32 tests 2009-01-22 14:07:31 +11:00
xfs_inode.c xfs: use generic Posix ACL code 2009-06-10 17:07:47 +02:00
xfs_inode.h switch xfs to generic acl caching helpers 2009-06-24 08:17:07 -04:00
xfs_inum.h
xfs_iomap.c xfs: use generic Posix ACL code 2009-06-10 17:07:47 +02:00
xfs_iomap.h xfs: remove xfs_flush_space 2009-04-06 18:49:12 +02:00
xfs_itable.c xfs: fix various typos 2009-03-29 09:55:42 +02:00
xfs_itable.h [XFS] Fix xfs_bulkstat_one size checks & error handling 2008-12-02 17:16:03 +11:00
xfs_log_priv.h xfs: cleanup xlog_bread 2009-03-16 08:24:13 +01:00
xfs_log_recover.c xfs: validate quota log items during log recovery 2009-06-08 15:33:21 +02:00
xfs_log_recover.h
xfs_log.c xfs: inform the xfsaild of the push target before sleeping 2009-04-06 18:42:59 +02:00
xfs_log.h xfs: cleanup log unmount handling 2009-03-16 08:19:29 +01:00
xfs_mount.c xfs: remove unused parameter from xfs_reclaim_inodes 2009-06-08 15:35:12 +02:00
xfs_mount.h xfs: kill xfs_qmops 2009-06-08 15:33:32 +02:00
xfs_mru_cache.c [XFS] streamline init/exit path 2008-07-28 16:59:25 +10:00
xfs_mru_cache.h [XFS] On-demand reaping of the MRU cache 2007-09-17 16:42:02 +10:00
xfs_quota.h xfs: fix warnings with CONFIG_XFS_QUOTA disabled 2009-06-12 21:15:12 -05:00
xfs_refcache.h
xfs_rename.c xfs: kill xfs_qmops 2009-06-08 15:33:32 +02:00
xfs_rtalloc.c xfs: make sure to free the real-time inodes in the mount error path 2009-02-04 09:33:58 +01:00
xfs_rtalloc.h xfs: fix various typos 2009-03-29 09:55:42 +02:00
xfs_rw.c xfs: use generic Posix ACL code 2009-06-10 17:07:47 +02:00
xfs_rw.h [XFS] Remove the rest of the macro-to-function indirections. 2009-01-19 14:45:55 +11:00
xfs_sb.h [XFS] Remove the rest of the macro-to-function indirections. 2009-01-19 14:45:55 +11:00
xfs_trans_ail.c xfs: fix various typos 2009-03-29 09:55:42 +02:00
xfs_trans_buf.c [XFS] Finish removing the mount pointer from the AIL API 2008-10-30 17:39:58 +11:00
xfs_trans_extfree.c [XFS] Radix tree based inode caching 2007-10-15 16:50:50 +10:00
xfs_trans_inode.c use xfs_trans_ijoin in xfs_trans_iget 2008-12-04 15:39:23 +11:00
xfs_trans_item.c xfs: fix various typos 2009-03-29 09:55:42 +02:00
xfs_trans_priv.h [XFS] Finish removing the mount pointer from the AIL API 2008-10-30 17:39:58 +11:00
xfs_trans_space.h xfs: remove superflous inobt macros 2009-02-09 08:37:14 +01:00
xfs_trans.c Merge branch 'master' of git://oss.sgi.com/xfs/xfs into for-linus 2009-06-12 21:28:59 -05:00
xfs_trans.h xfs: fix various typos 2009-03-29 09:55:42 +02:00
xfs_types.h xfs: remove uchar_t/ushort_t/uint_t/ulong_t types 2009-02-09 08:37:39 +01:00
xfs_utils.c xfs: kill xfs_qmops 2009-06-08 15:33:32 +02:00
xfs_utils.h [XFS] implement IHOLD/IRELE directly 2008-08-13 16:13:45 +10:00
xfs_vnodeops.c xfs: use generic Posix ACL code 2009-06-10 17:07:47 +02:00
xfs_vnodeops.h xfs: use generic Posix ACL code 2009-06-10 17:07:47 +02:00
xfs.h [XFS] make btree tracing generic 2008-10-30 16:55:13 +11:00