kill parent == child checks in xfs_remove and xfs_rmdir
PATCH 1/2 kill parent == child checks in xfs_remove and xfs_rmdir
VFS guaranteed these can't happen.
Signed-off-by Christoph Hellwig <[email protected]>
fs/xfs/xfs_vnodeops.c +6 -19
@@ -2312,7 +2312,7 @@ xfs_remove(xfs_itrace_ref (ip); error =XFS_QM_DQATTACH (mp, dp,0 ); -if (!error && dp != ip) +if (!error) error =XFS_QM_DQATTACH (mp, ip,0 );if (error) {REMOVE_DEBUG_TRACE (__LINE__);
@@ -2360,15 +2360,9 @@ xfs_remove(* inodes locked. */ xfs_trans_ijoin (tp, dp,XFS_ILOCK_EXCL ); -if (dp != ip) { -/* -* Increment vnode ref count only in this case since -* there's an extra vnode reference in the case where -* dp == ip. -*/ -IHOLD (dp); -xfs_trans_ijoin (tp, ip,XFS_ILOCK_EXCL ); - } + +IHOLD (dp); +xfs_trans_ijoin (tp, ip,XFS_ILOCK_EXCL );/* * Entry must exist since we did a lookup in xfs_lock_dir_and_entry.
@@ -2887,7 +2881,7 @@ xfs_rmdir(* Get the dquots for the inodes. */ error =XFS_QM_DQATTACH (mp, dp,0 ); -if (!error && dp != cdp) +if (!error) error =XFS_QM_DQATTACH (mp, cdp,0 );if (error) {IRELE (cdp);
@@ -2936,14 +2930,7 @@ xfs_rmdir( }xfs_trans_ijoin (tp, dp,XFS_ILOCK_EXCL ); -if (dp != cdp) { -/* -* Only increment the parent directory vnode count if -* we didn't bump it in looking up cdp. The only time -* we don't bump it is when we're looking up ".". -*/ -VN_HOLD (dir_vp); - } +VN_HOLD (dir_vp);xfs_itrace_ref (cdp);xfs_trans_ijoin (tp, cdp,XFS_ILOCK_EXCL );