Module Name: src Committed By: hannken Date: Fri Feb 7 15:26:42 UTC 2014
Modified Files: src/sys/kern: vnode_if.src Log Message: Change vnode operation lookup to return the resulting vnode *vpp unlocked. Change cache_lookup() to return an unlocked vnode. Discussed on tech-kern@ To generate a diff of this commit: cvs rdiff -u -r1.65 -r1.66 src/sys/kern/vnode_if.src 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.src diff -u src/sys/kern/vnode_if.src:1.65 src/sys/kern/vnode_if.src:1.66 --- src/sys/kern/vnode_if.src:1.65 Thu Jan 23 10:11:55 2014 +++ src/sys/kern/vnode_if.src Fri Feb 7 15:26:42 2014 @@ -1,4 +1,4 @@ -# $NetBSD: vnode_if.src,v 1.65 2014/01/23 10:11:55 hannken Exp $ +# $NetBSD: vnode_if.src,v 1.66 2014/02/07 15:26:42 hannken Exp $ # # Copyright (c) 1992, 1993 # The Regents of the University of California. All rights reserved. @@ -61,27 +61,17 @@ vop_bwrite { # #% lookup dvp L L L -#% lookup vpp - L - +#% lookup vpp - U - # -# XXX - the lookup locking protocol defies simple description. # Note especially that *vpp may equal dvp. # # More details: -# There are three types of lookups: ".", ".." (ISDOTDOT), and other. -# On successful lookup of ".", a reference is added to dvp, and it -# is returned in *vpp. -# To look up ISDOTDOT, dvp is unlocked, the ".." node is locked, and -# then dvp is relocked. This preserves the protocol of always -# locking nodes from root ("/") downward and prevents deadlock. -# Other lookups find the named node (creating the vnode if needed) and -# return it, locked, in *vpp. +# All lookups find the named node (creating the vnode if needed) and +# return it, referenced and unlocked, in *vpp. # On failure, *vpp is NULL, and *dvp is left locked. -# -# *vpp is always locked on return if the operation succeeds. -# Typically, if *vpp == dvp, you need to release twice, but -# unlock only once. # vop_lookup { + VERSION 2 IN struct vnode *dvp; OUT WILLMAKE struct vnode **vpp; IN struct componentname *cnp;