<dec f='src/src/sys/sys/namei.h' l='285' type='int cache_lookup(struct vnode * , const char * , size_t , __uint32_t , __uint32_t , int * , struct vnode ** )'/>
<use f='src/src/sys/fs/cd9660/cd9660_lookup.c' l='151' u='c' c='cd9660_lookup'/>
<use f='src/src/sys/fs/msdosfs/msdosfs_lookup.c' l='159' u='c' c='msdosfs_lookup'/>
<use f='src/src/sys/fs/ntfs/ntfs_vnops.c' l='694' u='c' c='ntfs_lookup'/>
<use f='src/src/sys/fs/puffs/puffs_vnops.c' l='533' u='c' c='puffs_vnop_lookup'/>
<use f='src/src/sys/fs/smbfs/smbfs_vnops.c' l='1221' u='c' c='smbfs_lookup'/>
<use f='src/src/sys/fs/tmpfs/tmpfs_vnops.c' l='167' u='c' c='tmpfs_lookup'/>
<def f='src/src/sys/kern/vfs_cache.c' l='501' ll='609' type='int cache_lookup(struct vnode * dvp, const char * name, size_t namelen, __uint32_t nameiop, __uint32_t cnflags, int * iswht_ret, struct vnode ** vn_ret)'/>
<doc f='src/src/sys/kern/vfs_cache.c' l='451'>/*
 * Look for a the name in the cache. We don&apos;t do this
 * if the segment name is long, simply so the cache can avoid
 * holding long names (which would either waste space, or
 * add greatly to the complexity).
 *
 * Lookup is called with DVP pointing to the directory to search,
 * and CNP providing the name of the entry being sought: cn_nameptr
 * is the name, cn_namelen is its length, and cn_flags is the flags
 * word from the namei operation.
 *
 * DVP must be locked.
 *
 * There are three possible non-error return states:
 *    1. Nothing was found in the cache. Nothing is known about
 *       the requested name.
 *    2. A negative entry was found in the cache, meaning that the
 *       requested name definitely does not exist.
 *    3. A positive entry was found in the cache, meaning that the
 *       requested name does exist and that we are providing the
 *       vnode.
 * In these cases the results are:
 *    1. 0 returned; VN is set to NULL.
 *    2. 1 returned; VN is set to NULL.
 *    3. 1 returned; VN is set to the vnode found.
 *
 * The additional result argument ISWHT is set to zero, unless a
 * negative entry is found that was entered as a whiteout, in which
 * case ISWHT is set to one.
 *
 * The ISWHT_RET argument pointer may be null. In this case an
 * assertion is made that the whiteout flag is not set. File systems
 * that do not support whiteouts can/should do this.
 *
 * Filesystems that do support whiteouts should add ISWHITEOUT to
 * cnp-&gt;cn_flags if ISWHT comes back nonzero.
 *
 * When a vnode is returned, it is locked, as per the vnode lookup
 * locking protocol.
 *
 * There is no way for this function to fail, in the sense of
 * generating an error that requires aborting the namei operation.
 *
 * (Prior to October 2012, this function returned an integer status,
 * and a vnode, and mucked with the flags word in CNP for whiteouts.
 * The integer status was -1 for &quot;nothing found&quot;, ENOENT for &quot;a
 * negative entry found&quot;, 0 for &quot;a positive entry found&quot;, and possibly
 * other errors, and the value of VN might or might not have been set
 * depending on what error occurred.)
 */</doc>
<use f='src/src/sys/ufs/ext2fs/ext2fs_lookup.c' l='340' u='c' c='ext2fs_lookup'/>
<use f='src/src/sys/ufs/lfs/ulfs_lookup.c' l='190' u='c' c='ulfs_lookup'/>
<use f='src/src/sys/ufs/ufs/ufs_lookup.c' l='358' u='c' c='ufs_lookup'/>
