xfs: more sensible inode refcounting for ialloc
authorChristoph Hellwig <hch@infradead.org>
Sun, 13 Feb 2011 13:26:42 +0000 (13:26 +0000)
committerAlex Elder <aelder@sgi.com>
Wed, 23 Feb 2011 02:32:28 +0000 (20:32 -0600)
commitec3ba85f4083d10e32fe58b46db02d78ef71f6b8
treebf8e3b41e913c80f24673b87fb390ce6903d82ac
parent1050c71e2925ab0cb025e4c89e08b15529a1ee36
xfs: more sensible inode refcounting for ialloc

Currently we return iodes from xfs_ialloc with just a single reference held.
But we need two references, as one is dropped during transaction commit and
the second needs to be transfered to the VFS.  Change xfs_ialloc to use
xfs_iget plus xfs_trans_ijoin_ref to grab two references to the inode,
and remove the now superflous IHOLD calls from all callers.  This also
greatly simplifies the error handling in xfs_create and also allow to remove
xfs_trans_iget as no other callers are left.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Alex Elder <aelder@sgi.com>
fs/xfs/quota/xfs_qm.c
fs/xfs/xfs_inode.c
fs/xfs/xfs_trans.h
fs/xfs/xfs_trans_inode.c
fs/xfs/xfs_vnodeops.c