xfs: simplify xfs_trans_ijoin* again
There is no reason to keep a reference to the inode even if we unlock it during transaction commit because we never drop a reference between the ijoin and commit. Also use this fact to merge xfs_trans_ijoin_ref back into xfs_trans_ijoin - the third argument decides if an unlock is needed now. I'm actually starting to wonder if allowing inodes to be unlocked at transaction commit really is worth the effort. The only real benefit is that they can be unlocked earlier when commiting a synchronous transactions, but that could be solved by doing the log force manually after the unlock, too. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Alex Elder <aelder@sgi.com>
This commit is contained in:
committed by
Alex Elder
parent
23bb0be1a2
commit
ddc3415aba
@@ -319,7 +319,7 @@ xfs_attr_set_int(
|
||||
return (error);
|
||||
}
|
||||
|
||||
xfs_trans_ijoin(args.trans, dp);
|
||||
xfs_trans_ijoin(args.trans, dp, 0);
|
||||
|
||||
/*
|
||||
* If the attribute list is non-existent or a shortform list,
|
||||
@@ -389,7 +389,7 @@ xfs_attr_set_int(
|
||||
* a new one. We need the inode to be in all transactions.
|
||||
*/
|
||||
if (committed)
|
||||
xfs_trans_ijoin(args.trans, dp);
|
||||
xfs_trans_ijoin(args.trans, dp, 0);
|
||||
|
||||
/*
|
||||
* Commit the leaf transformation. We'll need another (linked)
|
||||
@@ -537,7 +537,7 @@ xfs_attr_remove_int(xfs_inode_t *dp, struct xfs_name *name, int flags)
|
||||
* No need to make quota reservations here. We expect to release some
|
||||
* blocks not allocate in the common case.
|
||||
*/
|
||||
xfs_trans_ijoin(args.trans, dp);
|
||||
xfs_trans_ijoin(args.trans, dp, 0);
|
||||
|
||||
/*
|
||||
* Decide on what work routines to call based on the inode size.
|
||||
@@ -809,7 +809,7 @@ xfs_attr_inactive(xfs_inode_t *dp)
|
||||
* No need to make quota reservations here. We expect to release some
|
||||
* blocks, not allocate, in the common case.
|
||||
*/
|
||||
xfs_trans_ijoin(trans, dp);
|
||||
xfs_trans_ijoin(trans, dp, 0);
|
||||
|
||||
/*
|
||||
* Decide on what work routines to call based on the inode size.
|
||||
@@ -961,7 +961,7 @@ xfs_attr_leaf_addname(xfs_da_args_t *args)
|
||||
* a new one. We need the inode to be in all transactions.
|
||||
*/
|
||||
if (committed)
|
||||
xfs_trans_ijoin(args->trans, dp);
|
||||
xfs_trans_ijoin(args->trans, dp, 0);
|
||||
|
||||
/*
|
||||
* Commit the current trans (including the inode) and start
|
||||
@@ -1063,7 +1063,7 @@ xfs_attr_leaf_addname(xfs_da_args_t *args)
|
||||
* in all transactions.
|
||||
*/
|
||||
if (committed)
|
||||
xfs_trans_ijoin(args->trans, dp);
|
||||
xfs_trans_ijoin(args->trans, dp, 0);
|
||||
} else
|
||||
xfs_da_buf_done(bp);
|
||||
|
||||
@@ -1137,7 +1137,7 @@ xfs_attr_leaf_removename(xfs_da_args_t *args)
|
||||
* a new one. We need the inode to be in all transactions.
|
||||
*/
|
||||
if (committed)
|
||||
xfs_trans_ijoin(args->trans, dp);
|
||||
xfs_trans_ijoin(args->trans, dp, 0);
|
||||
} else
|
||||
xfs_da_buf_done(bp);
|
||||
return(0);
|
||||
@@ -1291,7 +1291,7 @@ restart:
|
||||
* in all transactions.
|
||||
*/
|
||||
if (committed)
|
||||
xfs_trans_ijoin(args->trans, dp);
|
||||
xfs_trans_ijoin(args->trans, dp, 0);
|
||||
|
||||
/*
|
||||
* Commit the node conversion and start the next
|
||||
@@ -1328,7 +1328,7 @@ restart:
|
||||
* a new one. We need the inode to be in all transactions.
|
||||
*/
|
||||
if (committed)
|
||||
xfs_trans_ijoin(args->trans, dp);
|
||||
xfs_trans_ijoin(args->trans, dp, 0);
|
||||
} else {
|
||||
/*
|
||||
* Addition succeeded, update Btree hashvals.
|
||||
@@ -1440,7 +1440,7 @@ restart:
|
||||
* in all transactions.
|
||||
*/
|
||||
if (committed)
|
||||
xfs_trans_ijoin(args->trans, dp);
|
||||
xfs_trans_ijoin(args->trans, dp, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1572,7 +1572,7 @@ xfs_attr_node_removename(xfs_da_args_t *args)
|
||||
* a new one. We need the inode to be in all transactions.
|
||||
*/
|
||||
if (committed)
|
||||
xfs_trans_ijoin(args->trans, dp);
|
||||
xfs_trans_ijoin(args->trans, dp, 0);
|
||||
|
||||
/*
|
||||
* Commit the Btree join operation and start a new trans.
|
||||
@@ -1623,7 +1623,7 @@ xfs_attr_node_removename(xfs_da_args_t *args)
|
||||
* in all transactions.
|
||||
*/
|
||||
if (committed)
|
||||
xfs_trans_ijoin(args->trans, dp);
|
||||
xfs_trans_ijoin(args->trans, dp, 0);
|
||||
} else
|
||||
xfs_da_brelse(args->trans, bp);
|
||||
}
|
||||
@@ -2060,7 +2060,7 @@ xfs_attr_rmtval_set(xfs_da_args_t *args)
|
||||
* a new one. We need the inode to be in all transactions.
|
||||
*/
|
||||
if (committed)
|
||||
xfs_trans_ijoin(args->trans, dp);
|
||||
xfs_trans_ijoin(args->trans, dp, 0);
|
||||
|
||||
ASSERT(nmap == 1);
|
||||
ASSERT((map.br_startblock != DELAYSTARTBLOCK) &&
|
||||
@@ -2207,7 +2207,7 @@ xfs_attr_rmtval_remove(xfs_da_args_t *args)
|
||||
* a new one. We need the inode to be in all transactions.
|
||||
*/
|
||||
if (committed)
|
||||
xfs_trans_ijoin(args->trans, args->dp);
|
||||
xfs_trans_ijoin(args->trans, args->dp, 0);
|
||||
|
||||
/*
|
||||
* Close out trans and start the next one in the chain.
|
||||
|
Reference in New Issue
Block a user