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))