android_kernel_xiaomi_sm8350/fs/xfs/linux-2.6
David Chinner 6bfb3d065f [XFS] Fix race when looking up reclaimable inodes
If we get a race looking up a reclaimable inode, we can end up with the
winner proceeding to use the inode before it has been completely
re-initialised. This is a Bad Thing.

Fix the race by checking whether we are still initialising the inod eonce
we have a reference to it, and if so wait for the initialisation to
complete before continuing.

While there, fix a leaked reference count in the same code when
encountering an unlinked inode and we are not doing a lookup for a create
operation.

SGI-PV: 987246

SGI-Modid: xfs-linux-melb:xfs-kern:32429a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
2008-10-30 18:32:43 +11:00
..
kmem.c [XFS] kmem_free and kmem_realloc to use const void * 2008-07-28 16:58:43 +10:00
kmem.h [XFS] kmem_free and kmem_realloc to use const void * 2008-07-28 16:58:43 +10:00
mrlock.h
mutex.h
sv.h
time.h
xfs_aops.c [XFS] Never call mark_inode_dirty_sync() directly 2008-10-30 17:21:30 +11:00
xfs_aops.h
xfs_buf.c Fix barrier fail detection in XFS 2008-10-10 11:08:07 -07:00
xfs_buf.h Fix barrier fail detection in XFS 2008-10-10 11:08:07 -07:00
xfs_cred.h [XFS] kill sys_cred 2008-10-30 18:27:48 +11:00
xfs_dmapi_priv.h
xfs_export.c [PATCH] switch all filesystems over to d_obtain_alias 2008-10-23 05:13:01 -04:00
xfs_export.h
xfs_file.c [PATCH] Remove XFS buffered readdir hack 2008-10-23 05:13:06 -04:00
xfs_fs_subr.c [XFS] Avoid directly referencing the VFS inode. 2008-08-13 15:45:15 +10:00
xfs_fs_subr.h
xfs_globals.c [XFS] remove restricted chown parameter from xfs linux 2008-10-30 18:30:48 +11:00
xfs_globals.h [XFS] kill sys_cred 2008-10-30 18:27:48 +11:00
xfs_ioctl32.c
xfs_ioctl32.h
xfs_ioctl.c [XFS] remove restricted chown parameter from xfs linux 2008-10-30 18:30:48 +11:00
xfs_iops.c [XFS] kill sys_cred 2008-10-30 18:27:48 +11:00
xfs_iops.h [XFS] stop using file_update_time 2008-08-13 16:48:12 +10:00
xfs_linux.h [XFS] Fix race when looking up reclaimable inodes 2008-10-30 18:32:43 +11:00
xfs_lrw.c [XFS] stop using file_update_time 2008-08-13 16:48:12 +10:00
xfs_lrw.h
xfs_stats.c [XFS] add new btree statistics 2008-10-30 16:55:03 +11:00
xfs_stats.h [XFS] add new btree statistics 2008-10-30 16:55:03 +11:00
xfs_super.c [XFS] fix biosize option 2008-10-30 17:55:08 +11:00
xfs_super.h [XFS] move xfssyncd code to xfs_sync.c 2008-10-30 17:06:18 +11:00
xfs_sync.c [XFS] avoid all reclaimable inodes in xfs_sync_inodes_ag 2008-10-30 18:03:14 +11:00
xfs_sync.h [XFS] mark inodes for reclaim via a tag in the inode radix tree 2008-10-30 17:37:26 +11:00
xfs_sysctl.c [XFS] remove restricted chown parameter from xfs linux 2008-10-30 18:30:48 +11:00
xfs_sysctl.h [XFS] remove restricted chown parameter from xfs linux 2008-10-30 18:30:48 +11:00
xfs_version.h
xfs_vfs.h [XFS] move xfssyncd code to xfs_sync.c 2008-10-30 17:06:18 +11:00
xfs_vnode.c [XFS] Combine the XFS and Linux inodes 2008-10-30 17:36:14 +11:00
xfs_vnode.h [XFS] Use struct inodes instead of vnodes to kill vn_grab 2008-10-30 17:15:03 +11:00
xfs_xattr.c [XFS] Remove vn_revalidate calls in xfs. 2008-07-28 16:59:39 +10:00