|
@@ -268,8 +268,7 @@ xfs_setattr(
|
|
|
commit_flags = XFS_TRANS_RELEASE_LOG_RES;
|
|
|
xfs_ilock(ip, XFS_ILOCK_EXCL);
|
|
|
|
|
|
- xfs_trans_ijoin(tp, ip, lock_flags);
|
|
|
- xfs_trans_ihold(tp, ip);
|
|
|
+ xfs_trans_ijoin(tp, ip);
|
|
|
|
|
|
/*
|
|
|
* Only change the c/mtime if we are changing the size
|
|
@@ -319,8 +318,7 @@ xfs_setattr(
|
|
|
xfs_iflags_set(ip, XFS_ITRUNCATED);
|
|
|
}
|
|
|
} else if (tp) {
|
|
|
- xfs_trans_ijoin(tp, ip, lock_flags);
|
|
|
- xfs_trans_ihold(tp, ip);
|
|
|
+ xfs_trans_ijoin(tp, ip);
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -653,10 +651,7 @@ xfs_free_eofblocks(
|
|
|
}
|
|
|
|
|
|
xfs_ilock(ip, XFS_ILOCK_EXCL);
|
|
|
- xfs_trans_ijoin(tp, ip,
|
|
|
- XFS_IOLOCK_EXCL |
|
|
|
- XFS_ILOCK_EXCL);
|
|
|
- xfs_trans_ihold(tp, ip);
|
|
|
+ xfs_trans_ijoin(tp, ip);
|
|
|
|
|
|
error = xfs_itruncate_finish(&tp, ip,
|
|
|
ip->i_size,
|
|
@@ -728,8 +723,7 @@ xfs_inactive_symlink_rmt(
|
|
|
xfs_ilock(ip, XFS_IOLOCK_EXCL | XFS_ILOCK_EXCL);
|
|
|
size = (int)ip->i_d.di_size;
|
|
|
ip->i_d.di_size = 0;
|
|
|
- xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL);
|
|
|
- xfs_trans_ihold(tp, ip);
|
|
|
+ xfs_trans_ijoin(tp, ip);
|
|
|
xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
|
|
|
/*
|
|
|
* Find the block(s) so we can inval and unmap them.
|
|
@@ -773,8 +767,7 @@ xfs_inactive_symlink_rmt(
|
|
|
* Mark it dirty so it will be logged and moved forward in the log as
|
|
|
* part of every commit.
|
|
|
*/
|
|
|
- xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL);
|
|
|
- xfs_trans_ihold(tp, ip);
|
|
|
+ xfs_trans_ijoin(tp, ip);
|
|
|
xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
|
|
|
/*
|
|
|
* Get a new, empty transaction to return to our caller.
|
|
@@ -907,8 +900,7 @@ xfs_inactive_attrs(
|
|
|
goto error_cancel;
|
|
|
|
|
|
xfs_ilock(ip, XFS_ILOCK_EXCL);
|
|
|
- xfs_trans_ijoin(tp, ip, XFS_IOLOCK_EXCL | XFS_ILOCK_EXCL);
|
|
|
- xfs_trans_ihold(tp, ip);
|
|
|
+ xfs_trans_ijoin(tp, ip);
|
|
|
xfs_idestroy_fork(ip, XFS_ATTR_FORK);
|
|
|
|
|
|
ASSERT(ip->i_d.di_anextents == 0);
|
|
@@ -1095,8 +1087,7 @@ xfs_inactive(
|
|
|
}
|
|
|
|
|
|
xfs_ilock(ip, XFS_ILOCK_EXCL);
|
|
|
- xfs_trans_ijoin(tp, ip, XFS_IOLOCK_EXCL | XFS_ILOCK_EXCL);
|
|
|
- xfs_trans_ihold(tp, ip);
|
|
|
+ xfs_trans_ijoin(tp, ip);
|
|
|
|
|
|
/*
|
|
|
* normally, we have to run xfs_itruncate_finish sync.
|
|
@@ -1129,8 +1120,7 @@ xfs_inactive(
|
|
|
return VN_INACTIVE_CACHE;
|
|
|
}
|
|
|
|
|
|
- xfs_trans_ijoin(tp, ip, XFS_IOLOCK_EXCL | XFS_ILOCK_EXCL);
|
|
|
- xfs_trans_ihold(tp, ip);
|
|
|
+ xfs_trans_ijoin(tp, ip);
|
|
|
} else {
|
|
|
error = xfs_trans_reserve(tp, 0,
|
|
|
XFS_IFREE_LOG_RES(mp),
|
|
@@ -1143,8 +1133,7 @@ xfs_inactive(
|
|
|
}
|
|
|
|
|
|
xfs_ilock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL);
|
|
|
- xfs_trans_ijoin(tp, ip, XFS_IOLOCK_EXCL | XFS_ILOCK_EXCL);
|
|
|
- xfs_trans_ihold(tp, ip);
|
|
|
+ xfs_trans_ijoin(tp, ip);
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -1392,8 +1381,7 @@ xfs_create(
|
|
|
* the transaction cancel unlocking dp so don't do it explicitly in the
|
|
|
* error path.
|
|
|
*/
|
|
|
- IHOLD(dp);
|
|
|
- xfs_trans_ijoin(tp, dp, XFS_ILOCK_EXCL);
|
|
|
+ xfs_trans_ijoin_ref(tp, dp, XFS_ILOCK_EXCL);
|
|
|
unlock_dp_on_error = B_FALSE;
|
|
|
|
|
|
error = xfs_dir_createname(tp, dp, name, ip->i_ino,
|
|
@@ -1730,15 +1718,8 @@ xfs_remove(
|
|
|
|
|
|
xfs_lock_two_inodes(dp, ip, XFS_ILOCK_EXCL);
|
|
|
|
|
|
- /*
|
|
|
- * At this point, we've gotten both the directory and the entry
|
|
|
- * inodes locked.
|
|
|
- */
|
|
|
- IHOLD(ip);
|
|
|
- xfs_trans_ijoin(tp, dp, XFS_ILOCK_EXCL);
|
|
|
-
|
|
|
- IHOLD(dp);
|
|
|
- xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
|
|
|
+ xfs_trans_ijoin_ref(tp, dp, XFS_ILOCK_EXCL);
|
|
|
+ xfs_trans_ijoin_ref(tp, ip, XFS_ILOCK_EXCL);
|
|
|
|
|
|
/*
|
|
|
* If we're removing a directory perform some additional validation.
|
|
@@ -1884,15 +1865,8 @@ xfs_link(
|
|
|
|
|
|
xfs_lock_two_inodes(sip, tdp, XFS_ILOCK_EXCL);
|
|
|
|
|
|
- /*
|
|
|
- * Increment vnode ref counts since xfs_trans_commit &
|
|
|
- * xfs_trans_cancel will both unlock the inodes and
|
|
|
- * decrement the associated ref counts.
|
|
|
- */
|
|
|
- IHOLD(sip);
|
|
|
- IHOLD(tdp);
|
|
|
- xfs_trans_ijoin(tp, sip, XFS_ILOCK_EXCL);
|
|
|
- xfs_trans_ijoin(tp, tdp, XFS_ILOCK_EXCL);
|
|
|
+ xfs_trans_ijoin_ref(tp, sip, XFS_ILOCK_EXCL);
|
|
|
+ xfs_trans_ijoin_ref(tp, tdp, XFS_ILOCK_EXCL);
|
|
|
|
|
|
/*
|
|
|
* If the source has too many links, we can't make any more to it.
|
|
@@ -2087,8 +2061,7 @@ xfs_symlink(
|
|
|
* transaction cancel unlocking dp so don't do it explicitly in the
|
|
|
* error path.
|
|
|
*/
|
|
|
- IHOLD(dp);
|
|
|
- xfs_trans_ijoin(tp, dp, XFS_ILOCK_EXCL);
|
|
|
+ xfs_trans_ijoin_ref(tp, dp, XFS_ILOCK_EXCL);
|
|
|
unlock_dp_on_error = B_FALSE;
|
|
|
|
|
|
/*
|
|
@@ -2227,13 +2200,12 @@ xfs_set_dmattrs(
|
|
|
return error;
|
|
|
}
|
|
|
xfs_ilock(ip, XFS_ILOCK_EXCL);
|
|
|
- xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
|
|
|
+ xfs_trans_ijoin_ref(tp, ip, XFS_ILOCK_EXCL);
|
|
|
|
|
|
ip->i_d.di_dmevmask = evmask;
|
|
|
ip->i_d.di_dmstate = state;
|
|
|
|
|
|
xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
|
|
|
- IHOLD(ip);
|
|
|
error = xfs_trans_commit(tp, 0);
|
|
|
|
|
|
return error;
|
|
@@ -2366,8 +2338,7 @@ xfs_alloc_file_space(
|
|
|
if (error)
|
|
|
goto error1;
|
|
|
|
|
|
- xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
|
|
|
- xfs_trans_ihold(tp, ip);
|
|
|
+ xfs_trans_ijoin(tp, ip);
|
|
|
|
|
|
/*
|
|
|
* Issue the xfs_bmapi() call to allocate the blocks
|
|
@@ -2668,8 +2639,7 @@ xfs_free_file_space(
|
|
|
if (error)
|
|
|
goto error1;
|
|
|
|
|
|
- xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
|
|
|
- xfs_trans_ihold(tp, ip);
|
|
|
+ xfs_trans_ijoin(tp, ip);
|
|
|
|
|
|
/*
|
|
|
* issue the bunmapi() call to free the blocks
|
|
@@ -2839,8 +2809,7 @@ xfs_change_file_space(
|
|
|
|
|
|
xfs_ilock(ip, XFS_ILOCK_EXCL);
|
|
|
|
|
|
- xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
|
|
|
- xfs_trans_ihold(tp, ip);
|
|
|
+ xfs_trans_ijoin(tp, ip);
|
|
|
|
|
|
if ((attr_flags & XFS_ATTR_DMI) == 0) {
|
|
|
ip->i_d.di_mode &= ~S_ISUID;
|