# Copyright (c) 1992, 1993
# The Regents of the University of California. All rights reserved.
# %sccs.include.redist.sh%
# @(#)vnode_if.src 8.4 (Berkeley) %G%
# Above each of the vop descriptors is a specification of the locking
# protocol used by each vop call. The first column is the name of
# the variable, the remaining three columns are in, out and error
# respectively. The "in" column defines the lock state on input,
# the "out" column defines the state on succesful return, and the
# "error" column defines the locking state on error exit.
# The locking value can take the following values:
# -: not applicable. vnode does not yet (or no longer) exists.
# =: the same on input and output, may be either L or U.
# XXX - the lookup locking protocol defies simple description and depends
# on the flags and operation fields in the (cnp) structure. Note
# especially that *vpp may equal dvp and both may be locked.
INOUT struct vnode **vpp;
IN struct componentname *cnp;
IN WILLRELE struct vnode *dvp;
IN struct componentname *cnp;
IN WILLRELE struct vnode *dvp;
OUT WILLRELE struct vnode **vpp;
IN struct componentname *cnp;
# Needs word: Is newoff right? What's it mean?
IN WILLRELE struct vnode *dvp;
IN WILLRELE struct vnode *vp;
IN struct componentname *cnp;
IN WILLRELE struct vnode *vp;
IN struct componentname *cnp;
IN WILLRELE struct vnode *fdvp;
IN WILLRELE struct vnode *fvp;
IN struct componentname *fcnp;
IN WILLRELE struct vnode *tdvp;
IN WILLRELE struct vnode *tvp;
IN struct componentname *tcnp;
IN WILLRELE struct vnode *dvp;
IN struct componentname *cnp;
IN WILLRELE struct vnode *dvp;
IN WILLRELE struct vnode *vp;
IN struct componentname *cnp;
# XXX - note that the return vnode has already been VRELE'ed
# by the filesystem layer. To use it you must use vget,
# possibly with a further namei.
IN WILLRELE struct vnode *dvp;
OUT WILLRELE struct vnode **vpp;
IN struct componentname *cnp;
IN struct componentname *cnp;
IN struct cluster_save *buflist;
IN struct timeval *access;
IN struct timeval *modify;