Module Name:    src
Committed By:   hannken
Date:           Fri Feb 17 08:25:15 UTC 2017

Modified Files:
        src/sys/kern: vfs_subr.c vfs_trans.c

Log Message:
Let syncer try fstrans_start() before running VFS_SYNC() to get rid
of the syncer lock/unlock from vfs_suspend().


To generate a diff of this commit:
cvs rdiff -u -r1.459 -r1.460 src/sys/kern/vfs_subr.c
cvs rdiff -u -r1.35 -r1.36 src/sys/kern/vfs_trans.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/vfs_subr.c
diff -u src/sys/kern/vfs_subr.c:1.459 src/sys/kern/vfs_subr.c:1.460
--- src/sys/kern/vfs_subr.c:1.459	Wed Jan 11 14:52:02 2017
+++ src/sys/kern/vfs_subr.c	Fri Feb 17 08:25:15 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_subr.c,v 1.459 2017/01/11 14:52:02 hannken Exp $	*/
+/*	$NetBSD: vfs_subr.c,v 1.460 2017/02/17 08:25:15 hannken Exp $	*/
 
 /*-
  * Copyright (c) 1997, 1998, 2004, 2005, 2007, 2008 The NetBSD Foundation, Inc.
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_subr.c,v 1.459 2017/01/11 14:52:02 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_subr.c,v 1.460 2017/02/17 08:25:15 hannken Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ddb.h"
@@ -83,6 +83,7 @@ __KERNEL_RCSID(0, "$NetBSD: vfs_subr.c,v
 #include <sys/filedesc.h>
 #include <sys/kernel.h>
 #include <sys/mount.h>
+#include <sys/fstrans.h>
 #include <sys/vnode_impl.h>
 #include <sys/stat.h>
 #include <sys/sysctl.h>
@@ -782,7 +783,10 @@ sched_sync(void *arg)
 			mp->mnt_synclist_slot = sync_delay_slot(sync_delay(mp));
 			if (vfs_busy(mp, &nmp))
 				continue;
-			VFS_SYNC(mp, MNT_LAZY, curlwp->l_cred);
+			if (fstrans_start_nowait(mp, FSTRANS_SHARED) == 0) {
+				VFS_SYNC(mp, MNT_LAZY, curlwp->l_cred);
+				fstrans_done(mp);
+			}
 			vfs_unbusy(mp, false, &nmp);
 		}
 		mutex_exit(&mountlist_lock);

Index: src/sys/kern/vfs_trans.c
diff -u src/sys/kern/vfs_trans.c:1.35 src/sys/kern/vfs_trans.c:1.36
--- src/sys/kern/vfs_trans.c:1.35	Fri Feb 17 08:24:07 2017
+++ src/sys/kern/vfs_trans.c	Fri Feb 17 08:25:15 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_trans.c,v 1.35 2017/02/17 08:24:07 hannken Exp $	*/
+/*	$NetBSD: vfs_trans.c,v 1.36 2017/02/17 08:25:15 hannken Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_trans.c,v 1.35 2017/02/17 08:24:07 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_trans.c,v 1.36 2017/02/17 08:25:15 hannken Exp $");
 
 /*
  * File system transaction operations.
@@ -506,11 +506,8 @@ vfs_suspend(struct mount *mp, int nowait
 	} else
 		mutex_enter(&vfs_suspend_lock);
 
-	mutex_enter(&syncer_mutex);
-	if ((error = VFS_SUSPENDCTL(mp, SUSPEND_SUSPEND)) != 0) {
-		mutex_exit(&syncer_mutex);
+	if ((error = VFS_SUSPENDCTL(mp, SUSPEND_SUSPEND)) != 0)
 		mutex_exit(&vfs_suspend_lock);
-	}
 
 	return error;
 }
@@ -523,7 +520,6 @@ vfs_resume(struct mount *mp)
 {
 
 	VFS_SUSPENDCTL(mp, SUSPEND_RESUME);
-	mutex_exit(&syncer_mutex);
 	mutex_exit(&vfs_suspend_lock);
 }
 

Reply via email to