[XFS] remove unessecary vnode flags
authorChristoph Hellwig <hch@sgi.com>
Fri, 2 Sep 2005 06:56:14 +0000 (16:56 +1000)
committerNathan Scott <nathans@sgi.com>
Fri, 2 Sep 2005 06:56:14 +0000 (16:56 +1000)
SGI-PV: 934766
SGI-Modid: xfs-linux:xfs-kern:196852a

Signed-off-by: Christoph Hellwig <hch@sgi.com>
Signed-off-by: Nathan Scott <nathans@sgi.com>
fs/xfs/linux-2.6/xfs_vnode.c
fs/xfs/linux-2.6/xfs_vnode.h
fs/xfs/xfs_iget.c

index ad16af38e96573d6542a98102ce295890631ba58..654da98de2a5c20d905b0473f27d7b3e84b5bf7d 100644 (file)
@@ -78,10 +78,6 @@ vn_reclaim(
        }
        ASSERT(vp->v_fbhv == NULL);
 
-       VN_LOCK(vp);
-       vp->v_flag &= (VRECLM|VWAIT);
-       VN_UNLOCK(vp, 0);
-
        vp->v_fbhv = NULL;
 
 #ifdef XFS_VNODE_TRACE
@@ -92,31 +88,6 @@ vn_reclaim(
        return 0;
 }
 
-STATIC void
-vn_wakeup(
-       struct vnode    *vp)
-{
-       VN_LOCK(vp);
-       if (vp->v_flag & VWAIT)
-               sv_broadcast(vptosync(vp));
-       vp->v_flag &= ~(VRECLM|VWAIT|VMODIFIED);
-       VN_UNLOCK(vp, 0);
-}
-
-int
-vn_wait(
-       struct vnode    *vp)
-{
-       VN_LOCK(vp);
-       if (vp->v_flag & (VINACT | VRECLM)) {
-               vp->v_flag |= VWAIT;
-               sv_wait(vptosync(vp), PINOD, &vp->v_lock, 0);
-               return 1;
-       }
-       VN_UNLOCK(vp, 0);
-       return 0;
-}
-
 struct vnode *
 vn_initialize(
        struct inode    *inode)
@@ -221,7 +192,6 @@ vn_purge(
 {
        vn_trace_entry(vp, "vn_purge", (inst_t *)__return_address);
 
-again:
        /*
         * Check whether vp has already been reclaimed since our caller
         * sampled its version while holding a filesystem cache lock that
@@ -233,19 +203,6 @@ again:
                return;
        }
 
-       /*
-        * If vp is being reclaimed or inactivated, wait until it is inert,
-        * then proceed.  Can't assume that vnode is actually reclaimed
-        * just because the reclaimed flag is asserted -- a vn_alloc
-        * reclaim can fail.
-        */
-       if (vp->v_flag & (VINACT | VRECLM)) {
-               ASSERT(vn_count(vp) == 0);
-               vp->v_flag |= VWAIT;
-               sv_wait(vptosync(vp), PINOD, &vp->v_lock, 0);
-               goto again;
-       }
-
        /*
         * Another process could have raced in and gotten this vnode...
         */
@@ -255,7 +212,6 @@ again:
        }
 
        XFS_STATS_DEC(vn_active);
-       vp->v_flag |= VRECLM;
        VN_UNLOCK(vp, 0);
 
        /*
@@ -266,11 +222,6 @@ again:
         */
        if (vn_reclaim(vp) != 0)
                panic("vn_purge: cannot reclaim");
-
-       /*
-        * Wakeup anyone waiting for vp to be reclaimed.
-        */
-       vn_wakeup(vp);
 }
 
 /*
@@ -315,11 +266,6 @@ vn_rele(
         * return.
         */
        if (!vcnt) {
-               /*
-                * As soon as we turn this on, noone can find us in vn_get
-                * until we turn off VINACT or VRECLM
-                */
-               vp->v_flag |= VINACT;
                VN_UNLOCK(vp, 0);
 
                /*
@@ -330,10 +276,7 @@ vn_rele(
                        VOP_INACTIVE(vp, NULL, cache);
 
                VN_LOCK(vp);
-               if (vp->v_flag & VWAIT)
-                       sv_broadcast(vptosync(vp));
-
-               vp->v_flag &= ~(VINACT|VWAIT|VRECLM|VMODIFIED);
+               vp->v_flag &= ~VMODIFIED;
        }
 
        VN_UNLOCK(vp, 0);
index bc9ed722ba1ee28056f09cba947fbc336f857ade..4a74569a569099943a5f84ddbdf5f0fe90a77710 100644 (file)
@@ -135,9 +135,6 @@ typedef enum {
 /*
  * Vnode flags.
  */
-#define VINACT                0x1      /* vnode is being inactivated   */
-#define VRECLM                0x2      /* vnode is being reclaimed     */
-#define VWAIT                 0x4      /* waiting for VINACT/VRECLM to end */
 #define VMODIFIED             0x8      /* XFS inode state possibly differs */
                                        /* to the Linux inode state.    */
 
@@ -489,7 +486,6 @@ typedef struct vattr {
        (VN_ISREG(vp) && ((mode) & (VSGID|(VEXEC>>3))) == VSGID)
 
 extern void    vn_init(void);
-extern int     vn_wait(struct vnode *);
 extern vnode_t *vn_initialize(struct inode *);
 
 /*
index d3da00045f260074fca466319a23bfdc34ed14c3..fa796910f3aab3cf2398baba704dea85405fc380 100644 (file)
@@ -505,7 +505,6 @@ xfs_iget(
        vnode_t         *vp = NULL;
        int             error;
 
-retry:
        XFS_STATS_INC(xs_ig_attempts);
 
        if ((inode = iget_locked(XFS_MTOVFS(mp)->vfs_super, ino))) {
@@ -526,16 +525,6 @@ inode_allocate:
                                iput(inode);
                        }
                } else {
-                       /* These are true if the inode is in inactive or
-                        * reclaim. The linux inode is about to go away,
-                        * wait for that path to finish, and try again.
-                        */
-                       if (vp->v_flag & (VINACT | VRECLM)) {
-                               vn_wait(vp);
-                               iput(inode);
-                               goto retry;
-                       }
-
                        if (is_bad_inode(inode)) {
                                iput(inode);
                                return EIO;