svn commit: r187892 - in stable/7/sys: . contrib/pf dev/ath/ath_hal dev/cxgb gnu/fs/ext2fs kern sys

Konstantin Belousov kib at FreeBSD.org
Thu Jan 29 03:38:29 PST 2009


Author: kib
Date: Thu Jan 29 11:38:28 2009
New Revision: 187892
URL: http://svn.freebsd.org/changeset/base/187892

Log:
  MFC r183071:
  Garbage-collect vn_write_suspend_wait().

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/ath/ath_hal/   (props changed)
  stable/7/sys/dev/cxgb/   (props changed)
  stable/7/sys/gnu/fs/ext2fs/ext2_inode.c
  stable/7/sys/kern/vfs_vnops.c
  stable/7/sys/sys/vnode.h

Modified: stable/7/sys/gnu/fs/ext2fs/ext2_inode.c
==============================================================================
--- stable/7/sys/gnu/fs/ext2fs/ext2_inode.c	Thu Jan 29 11:21:15 2009	(r187891)
+++ stable/7/sys/gnu/fs/ext2fs/ext2_inode.c	Thu Jan 29 11:38:28 2009	(r187892)
@@ -481,7 +481,6 @@ ext2_inactive(ap)
 	if (ip->i_mode == 0)
 		goto out;
 	if (ip->i_nlink <= 0) {
-		(void) vn_write_suspend_wait(vp, NULL, V_WAIT);
 		error = ext2_truncate(vp, (off_t)0, 0, NOCRED, td);
 		ip->i_rdev = 0;
 		mode = ip->i_mode;
@@ -489,15 +488,8 @@ ext2_inactive(ap)
 		ip->i_flag |= IN_CHANGE | IN_UPDATE;
 		ext2_vfree(vp, ip->i_number, mode);
 	}
-	if (ip->i_flag & (IN_ACCESS | IN_CHANGE | IN_MODIFIED | IN_UPDATE)) {
-		if ((ip->i_flag & (IN_CHANGE | IN_UPDATE | IN_MODIFIED)) == 0 &&
-		    vn_write_suspend_wait(vp, NULL, V_NOWAIT)) {
-			ip->i_flag &= ~IN_ACCESS;
-		} else {
-			(void) vn_write_suspend_wait(vp, NULL, V_WAIT);
-			ext2_update(vp, 0);
-		}
-	}
+	if (ip->i_flag & (IN_ACCESS | IN_CHANGE | IN_MODIFIED | IN_UPDATE))
+		ext2_update(vp, 0);
 out:
 	/*
 	 * If we are done with the inode, reclaim it

Modified: stable/7/sys/kern/vfs_vnops.c
==============================================================================
--- stable/7/sys/kern/vfs_vnops.c	Thu Jan 29 11:21:15 2009	(r187891)
+++ stable/7/sys/kern/vfs_vnops.c	Thu Jan 29 11:38:28 2009	(r187892)
@@ -943,56 +943,6 @@ unlock:
  * time, these operations are halted until the suspension is over.
  */
 int
-vn_write_suspend_wait(vp, mp, flags)
-	struct vnode *vp;
-	struct mount *mp;
-	int flags;
-{
-	int error;
-
-	if (vp != NULL) {
-		if ((error = VOP_GETWRITEMOUNT(vp, &mp)) != 0) {
-			if (error != EOPNOTSUPP)
-				return (error);
-			return (0);
-		}
-	}
-	/*
-	 * If we are not suspended or have not yet reached suspended
-	 * mode, then let the operation proceed.
-	 */
-	if (mp == NULL)
-		return (0);
-	MNT_ILOCK(mp);
-	if (vp == NULL)
-		MNT_REF(mp);
-	if ((mp->mnt_kern_flag & MNTK_SUSPENDED) == 0) {
-		MNT_REL(mp);
-		MNT_IUNLOCK(mp);
-		return (0);
-	}
-	if (flags & V_NOWAIT) {
-		MNT_REL(mp);
-		MNT_IUNLOCK(mp);
-		return (EWOULDBLOCK);
-	}
-	/*
-	 * Wait for the suspension to finish.
-	 */
-	error = msleep(&mp->mnt_flag, MNT_MTX(mp),
-	    (PUSER - 1) | (flags & PCATCH) | PDROP, "suspfs", 0);
-	vfs_rel(mp);
-	return (error);
-}
-
-/*
- * Secondary suspension. Used by operations such as vop_inactive
- * routines that are needed by the higher level functions. These
- * are allowed to proceed until all the higher level functions have
- * completed (indicated by mnt_writeopcount dropping to zero). At that
- * time, these operations are halted until the suspension is over.
- */
-int
 vn_start_secondary_write(vp, mpp, flags)
 	struct vnode *vp;
 	struct mount **mpp;

Modified: stable/7/sys/sys/vnode.h
==============================================================================
--- stable/7/sys/sys/vnode.h	Thu Jan 29 11:21:15 2009	(r187891)
+++ stable/7/sys/sys/vnode.h	Thu Jan 29 11:38:28 2009	(r187892)
@@ -625,8 +625,6 @@ int	vn_stat(struct vnode *vp, struct sta
 int	vn_start_write(struct vnode *vp, struct mount **mpp, int flags);
 int	vn_start_secondary_write(struct vnode *vp, struct mount **mpp,
 	    int flags);
-int	vn_write_suspend_wait(struct vnode *vp, struct mount *mp,
-	    int flags);
 int	vn_writechk(struct vnode *vp);
 int	vn_extattr_get(struct vnode *vp, int ioflg, int attrnamespace,
 	    const char *attrname, int *buflen, char *buf, struct thread *td);


More information about the svn-src-all mailing list