mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-22 14:41:27 +00:00
xfs: simplify inode to transaction joining
Currently we need to either call IHOLD or xfs_trans_ihold on an inode when joining it to a transaction via xfs_trans_ijoin. This patches instead makes xfs_trans_ijoin usable on it's own by doing an implicity xfs_trans_ihold, which also allows us to drop the third argument. For the case where we want to hold a reference on the inode a xfs_trans_ijoin_ref wrapper is added which does the IHOLD and marks the inode for needing an xfs_iput. In addition to the cleaner interface to the caller this also simplifies the implementation. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <dchinner@redhat.com>
This commit is contained in:
parent
4d16e9246f
commit
898621d5a7
19 changed files with 103 additions and 247 deletions
|
@ -1456,7 +1456,7 @@ xfs_itruncate_finish(
|
|||
ASSERT((*tp)->t_flags & XFS_TRANS_PERM_LOG_RES);
|
||||
ASSERT(ip->i_transp == *tp);
|
||||
ASSERT(ip->i_itemp != NULL);
|
||||
ASSERT(ip->i_itemp->ili_flags & XFS_ILI_HOLD);
|
||||
ASSERT(ip->i_itemp->ili_lock_flags == 0);
|
||||
|
||||
|
||||
ntp = *tp;
|
||||
|
@ -1608,12 +1608,8 @@ xfs_itruncate_finish(
|
|||
*/
|
||||
error = xfs_bmap_finish(tp, &free_list, &committed);
|
||||
ntp = *tp;
|
||||
if (committed) {
|
||||
/* link the inode into the next xact in the chain */
|
||||
xfs_trans_ijoin(ntp, ip,
|
||||
XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL);
|
||||
xfs_trans_ihold(ntp, ip);
|
||||
}
|
||||
if (committed)
|
||||
xfs_trans_ijoin(ntp, ip);
|
||||
|
||||
if (error) {
|
||||
/*
|
||||
|
@ -1642,9 +1638,7 @@ xfs_itruncate_finish(
|
|||
error = xfs_trans_commit(*tp, 0);
|
||||
*tp = ntp;
|
||||
|
||||
/* link the inode into the next transaction in the chain */
|
||||
xfs_trans_ijoin(ntp, ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL);
|
||||
xfs_trans_ihold(ntp, ip);
|
||||
xfs_trans_ijoin(ntp, ip);
|
||||
|
||||
if (error)
|
||||
return error;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue