xfs
[Top] [All Lists]

[PATCH 1/2] kill parent == child checks in xfs_remove and xfs_rmdir

To: xfs@xxxxxxxxxxx
Subject: [PATCH 1/2] kill parent == child checks in xfs_remove and xfs_rmdir
From: Christoph Hellwig <hch@xxxxxx>
Date: Thu, 10 Apr 2008 20:48:58 +0200
Sender: xfs-bounce@xxxxxxxxxxx
User-agent: Mutt/1.3.28i
VFS guaranteed these can't happen.


Signed-off-by: Christoph Hellwig <hch@xxxxxx>

Index: linux-2.6-xfs/fs/xfs/xfs_vnodeops.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/xfs_vnodeops.c    2008-03-21 17:15:21.000000000 
+0100
+++ linux-2.6-xfs/fs/xfs/xfs_vnodeops.c 2008-03-21 17:16:34.000000000 +0100
@@ -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);


<Prev in Thread] Current Thread [Next in Thread>
  • [PATCH 1/2] kill parent == child checks in xfs_remove and xfs_rmdir, Christoph Hellwig <=