mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
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>
This commit is contained in:
parent
1050c71e29
commit
ec3ba85f40
5 changed files with 20 additions and 79 deletions
|
@ -43,28 +43,6 @@ xfs_trans_inode_broot_debug(
|
|||
#define xfs_trans_inode_broot_debug(ip)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Get an inode and join it to the transaction.
|
||||
*/
|
||||
int
|
||||
xfs_trans_iget(
|
||||
xfs_mount_t *mp,
|
||||
xfs_trans_t *tp,
|
||||
xfs_ino_t ino,
|
||||
uint flags,
|
||||
uint lock_flags,
|
||||
xfs_inode_t **ipp)
|
||||
{
|
||||
int error;
|
||||
|
||||
error = xfs_iget(mp, tp, ino, flags, lock_flags, ipp);
|
||||
if (!error && tp) {
|
||||
xfs_trans_ijoin(tp, *ipp);
|
||||
(*ipp)->i_itemp->ili_lock_flags = lock_flags;
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add a locked inode to the transaction.
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue