Bläddra i källkod

[XFS] remove unessecary vnode flags

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>
Christoph Hellwig 19 år sedan
förälder
incheckning
592cb26bda
3 ändrade filer med 1 tillägg och 73 borttagningar
  1. 1 58
      fs/xfs/linux-2.6/xfs_vnode.c
  2. 0 4
      fs/xfs/linux-2.6/xfs_vnode.h
  3. 0 11
      fs/xfs/xfs_iget.c

+ 1 - 58
fs/xfs/linux-2.6/xfs_vnode.c

@@ -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);

+ 0 - 4
fs/xfs/linux-2.6/xfs_vnode.h

@@ -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 *);
 
 /*

+ 0 - 11
fs/xfs/xfs_iget.c

@@ -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;