Module Name: src
Committed By: ad
Date: Sat Jan 18 17:12:59 UTC 2020
Modified Files:
src/sys/kern [ad-namecache]: vnode_if.sh
src/sys/miscfs/genfs [ad-namecache]: genfs_vnops.c
Log Message:
Allow VOP_LOCK(LK_NONE).
To generate a diff of this commit:
cvs rdiff -u -r1.68 -r1.68.2.1 src/sys/kern/vnode_if.sh
cvs rdiff -u -r1.200 -r1.200.2.1 src/sys/miscfs/genfs/genfs_vnops.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/vnode_if.sh
diff -u src/sys/kern/vnode_if.sh:1.68 src/sys/kern/vnode_if.sh:1.68.2.1
--- src/sys/kern/vnode_if.sh:1.68 Sun Dec 1 13:56:29 2019
+++ src/sys/kern/vnode_if.sh Sat Jan 18 17:12:59 2020
@@ -29,7 +29,7 @@ copyright="\
* SUCH DAMAGE.
*/
"
-SCRIPT_ID='$NetBSD: vnode_if.sh,v 1.68 2019/12/01 13:56:29 ad Exp $'
+SCRIPT_ID='$NetBSD: vnode_if.sh,v 1.68.2.1 2020/01/18 17:12:59 ad Exp $'
# Script to produce VFS front-end sugar.
#
@@ -481,7 +481,7 @@ function bodynorm() {
}
if (fstrans == "LOCK")
printf("\terror = vop_pre(%s, &mp, &mpsafe, %s);\n",
- argname[0], "(flags & (LK_UPGRADE|LK_DOWNGRADE) ? FST_NO : (flags & LK_NOWAIT ? FST_TRY : FST_YES))");
+ argname[0], "(!(flags & (LK_SHARED|LK_EXCLUSIVE)) ? FST_NO : (flags & LK_NOWAIT ? FST_TRY : FST_YES))");
else if (fstrans == "UNLOCK")
printf("\terror = vop_pre(%s, &mp, &mpsafe, FST_%s);\n",
argname[0], "NO");
Index: src/sys/miscfs/genfs/genfs_vnops.c
diff -u src/sys/miscfs/genfs/genfs_vnops.c:1.200 src/sys/miscfs/genfs/genfs_vnops.c:1.200.2.1
--- src/sys/miscfs/genfs/genfs_vnops.c:1.200 Sun Dec 1 13:56:29 2019
+++ src/sys/miscfs/genfs/genfs_vnops.c Sat Jan 18 17:12:59 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: genfs_vnops.c,v 1.200 2019/12/01 13:56:29 ad Exp $ */
+/* $NetBSD: genfs_vnops.c,v 1.200.2.1 2020/01/18 17:12:59 ad Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -57,7 +57,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: genfs_vnops.c,v 1.200 2019/12/01 13:56:29 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: genfs_vnops.c,v 1.200.2.1 2020/01/18 17:12:59 ad Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -301,7 +301,7 @@ genfs_deadlock(void *v)
rw_exit(vip->vi_lock);
rw_enter(vip->vi_lock, RW_WRITER);
}
- } else {
+ } else if ((flags & (LK_EXCLUSIVE | LK_SHARED)) != 0) {
op = (ISSET(flags, LK_EXCLUSIVE) ? RW_WRITER : RW_READER);
if (ISSET(flags, LK_NOWAIT)) {
if (!rw_tryenter(vip->vi_lock, op))
@@ -355,7 +355,7 @@ genfs_lock(void *v)
rw_exit(vip->vi_lock);
rw_enter(vip->vi_lock, RW_WRITER);
}
- } else {
+ } else if ((flags & (LK_EXCLUSIVE | LK_SHARED)) != 0) {
op = (ISSET(flags, LK_EXCLUSIVE) ? RW_WRITER : RW_READER);
if (ISSET(flags, LK_NOWAIT)) {
if (!rw_tryenter(vip->vi_lock, op))