Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 13 Dec 2013 06:09:19 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r259294 - in stable/10/sys: kern sys
Message-ID:  <201312130609.rBD69JXG080475@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Fri Dec 13 06:09:19 2013
New Revision: 259294
URL: http://svnweb.freebsd.org/changeset/base/259294

Log:
  MFC r257898:
  Change VFS_PROLOGUE() to evaluate the mp once, convert
  MNTK_SHARED_WRITES and MNTK_EXTENDED_SHARED tests into inline functions.

Modified:
  stable/10/sys/kern/vfs_lookup.c
  stable/10/sys/kern/vfs_vnops.c
  stable/10/sys/sys/mount.h
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/kern/vfs_lookup.c
==============================================================================
--- stable/10/sys/kern/vfs_lookup.c	Fri Dec 13 06:06:25 2013	(r259293)
+++ stable/10/sys/kern/vfs_lookup.c	Fri Dec 13 06:09:19 2013	(r259294)
@@ -424,13 +424,8 @@ needs_exclusive_leaf(struct mount *mp, i
 	 * extended shared operations, then use a shared lock for the
 	 * leaf node, otherwise use an exclusive lock.
 	 */
-	if (flags & ISOPEN) {
-		if (mp != NULL &&
-		    (mp->mnt_kern_flag & MNTK_EXTENDED_SHARED))
-			return (0);
-		else
-			return (1);
-	}
+	if ((flags & ISOPEN) != 0)
+		return (!MNT_EXTENDED_SHARED(mp));
 
 	/*
 	 * Lookup requests outside of open() that specify LOCKSHARED

Modified: stable/10/sys/kern/vfs_vnops.c
==============================================================================
--- stable/10/sys/kern/vfs_vnops.c	Fri Dec 13 06:06:25 2013	(r259293)
+++ stable/10/sys/kern/vfs_vnops.c	Fri Dec 13 06:09:19 2013	(r259294)
@@ -360,8 +360,8 @@ vn_close(vp, flags, file_cred, td)
 	struct mount *mp;
 	int error, lock_flags;
 
-	if (vp->v_type != VFIFO && !(flags & FWRITE) && vp->v_mount != NULL &&
-	    vp->v_mount->mnt_kern_flag & MNTK_EXTENDED_SHARED)
+	if (vp->v_type != VFIFO && (flags & FWRITE) == 0 &&
+	    MNT_EXTENDED_SHARED(vp->v_mount))
 		lock_flags = LK_SHARED;
 	else
 		lock_flags = LK_EXCLUSIVE;

Modified: stable/10/sys/sys/mount.h
==============================================================================
--- stable/10/sys/sys/mount.h	Fri Dec 13 06:06:25 2013	(r259293)
+++ stable/10/sys/sys/mount.h	Fri Dec 13 06:09:19 2013	(r259294)
@@ -362,8 +362,19 @@ void          __mnt_vnode_markerfree_act
 #define MNTK_LOOKUP_SHARED	0x40000000 /* FS supports shared lock lookups */
 #define	MNTK_NOKNOTE	0x80000000	/* Don't send KNOTEs from VOP hooks */
 
-#define	MNT_SHARED_WRITES(mp) (((mp) != NULL) && 	\
-				((mp)->mnt_kern_flag & MNTK_SHARED_WRITES))
+static inline int
+MNT_SHARED_WRITES(struct mount *mp)
+{
+
+	return (mp != NULL && (mp->mnt_kern_flag & MNTK_SHARED_WRITES) != 0);
+}
+
+static inline int
+MNT_EXTENDED_SHARED(struct mount *mp)
+{
+
+	return (mp != NULL && (mp->mnt_kern_flag & MNTK_EXTENDED_SHARED) != 0);
+}
 
 /*
  * Sysctl CTL_VFS definitions.
@@ -636,10 +647,12 @@ struct vfsops {
 vfs_statfs_t	__vfs_statfs;
 
 #define	VFS_PROLOGUE(MP)	do {					\
+	struct mount *mp__;						\
 	int _enable_stops;						\
 									\
-	_enable_stops = ((MP) != NULL &&				\
-	    ((MP)->mnt_vfc->vfc_flags & VFCF_SBDRY) && sigdeferstop())
+	mp__ = (MP);							\
+	_enable_stops = (mp__ != NULL &&				\
+	    (mp__->mnt_vfc->vfc_flags & VFCF_SBDRY) && sigdeferstop())
 
 #define	VFS_EPILOGUE(MP)						\
 	if (_enable_stops)						\



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201312130609.rBD69JXG080475>