Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/kern Let syncer try fstrans_start() before running VFS_S...



details:   https://anonhg.NetBSD.org/src/rev/4a47d246f2ec
branches:  trunk
changeset: 821781:4a47d246f2ec
user:      hannken <hannken%NetBSD.org@localhost>
date:      Fri Feb 17 08:25:15 2017 +0000

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

diffstat:

 sys/kern/vfs_subr.c  |  10 +++++++---
 sys/kern/vfs_trans.c |  10 +++-------
 2 files changed, 10 insertions(+), 10 deletions(-)

diffs (77 lines):

diff -r 81ee67f92bb7 -r 4a47d246f2ec sys/kern/vfs_subr.c
--- a/sys/kern/vfs_subr.c       Fri Feb 17 08:24:07 2017 +0000
+++ b/sys/kern/vfs_subr.c       Fri Feb 17 08:25:15 2017 +0000
@@ -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 @@
 #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 @@
                        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);
diff -r 81ee67f92bb7 -r 4a47d246f2ec sys/kern/vfs_trans.c
--- a/sys/kern/vfs_trans.c      Fri Feb 17 08:24:07 2017 +0000
+++ b/sys/kern/vfs_trans.c      Fri Feb 17 08:25:15 2017 +0000
@@ -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 @@
        } 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_SUSPENDCTL(mp, SUSPEND_RESUME);
-       mutex_exit(&syncer_mutex);
        mutex_exit(&vfs_suspend_lock);
 }
 



Home | Main Index | Thread Index | Old Index