svn commit: r327679 - head/sys/kern
Ian Lepore
ian at FreeBSD.org
Sun Jan 7 18:07:23 UTC 2018
Author: ian
Date: Sun Jan 7 18:07:22 2018
New Revision: 327679
URL: https://svnweb.freebsd.org/changeset/base/327679
Log:
Use EVENTHANDLER_DIRECT_INVOKE for [un]mount events, for better performance.
Modified:
head/sys/kern/vfs_mount.c
Modified: head/sys/kern/vfs_mount.c
==============================================================================
--- head/sys/kern/vfs_mount.c Sun Jan 7 18:06:30 2018 (r327678)
+++ head/sys/kern/vfs_mount.c Sun Jan 7 18:07:22 2018 (r327679)
@@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/conf.h>
+#include <sys/eventhandler.h>
#include <sys/fcntl.h>
#include <sys/jail.h>
#include <sys/kernel.h>
@@ -91,6 +92,9 @@ struct mntlist mountlist = TAILQ_HEAD_INITIALIZER(moun
struct mtx mountlist_mtx;
MTX_SYSINIT(mountlist, &mountlist_mtx, "mountlist", MTX_DEF);
+EVENTHANDLER_LIST_DEFINE(vfs_mounted);
+EVENTHANDLER_LIST_DEFINE(vfs_unmounted);
+
/*
* Global opts, taken by all filesystems
*/
@@ -865,7 +869,7 @@ vfs_domount_first(
if (VFS_ROOT(mp, LK_EXCLUSIVE, &newdp))
panic("mount: lost mount");
VOP_UNLOCK(vp, 0);
- EVENTHANDLER_INVOKE(vfs_mounted, mp, newdp, td);
+ EVENTHANDLER_DIRECT_INVOKE(vfs_mounted, mp, newdp, td);
VOP_UNLOCK(newdp, 0);
mountcheckdirs(vp, newdp);
vrele(newdp);
@@ -1401,7 +1405,7 @@ dounmount(struct mount *mp, int flags, struct thread *
mtx_lock(&mountlist_mtx);
TAILQ_REMOVE(&mountlist, mp, mnt_list);
mtx_unlock(&mountlist_mtx);
- EVENTHANDLER_INVOKE(vfs_unmounted, mp, td);
+ EVENTHANDLER_DIRECT_INVOKE(vfs_unmounted, mp, td);
if (coveredvp != NULL) {
coveredvp->v_mountedhere = NULL;
VOP_UNLOCK(coveredvp, 0);
More information about the svn-src-head
mailing list