[XFS] Fix race when looking up reclaimable inodes
authorDavid Chinner <david@fromorbit.com>
Thu, 30 Oct 2008 07:32:43 +0000 (18:32 +1100)
committerLachlan McIlroy <lachlan@redback.melbourne.sgi.com>
Thu, 30 Oct 2008 07:32:43 +0000 (18:32 +1100)
commit6bfb3d065f4c498c17a3a07f3dc08cedff53aff4
treec5c528c77e44584616a175e0dcc89713e7b76d0a
parente0b8e8b65d578f5d5538465dff8392cf02e1cc5d
[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>
fs/xfs/linux-2.6/xfs_linux.h
fs/xfs/xfs_iget.c