Skip to content

Commit

Permalink
vfs: bring vfs_lookup() description comment up to date
Browse files Browse the repository at this point in the history
Signed-off-by: Igor Ostapenko <pm@igoro.pro>
Reviewed by: imp, mhorne
Pull Request: freebsd/freebsd-src#737
  • Loading branch information
ihoro authored and bsdjhb committed Aug 29, 2023
2 parents fd44d25 + 7b5a1c3 commit d59b187
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions sys/kern/vfs_lookup.c
Original file line number Diff line number Diff line change
Expand Up @@ -878,34 +878,35 @@ vfs_lookup_failifexists(struct nameidata *ndp)
*
* The pathname is pointed to by cn_nameptr and is of length ni_pathlen.
* The starting directory is taken from ni_startdir. The pathname is
* descended until done, or a symbolic link is encountered. The variable
* ni_more is clear if the path is completed; it is set to one if a
* descended until done, or a symbolic link is encountered. The cn_flags
* has ISLASTCN or'ed if the path is completed or ISSYMLINK or'ed if a
* symbolic link needing interpretation is encountered.
*
* The flag argument is LOOKUP, CREATE, RENAME, or DELETE depending on
* The cn_nameiop is LOOKUP, CREATE, RENAME, or DELETE depending on
* whether the name is to be looked up, created, renamed, or deleted.
* When CREATE, RENAME, or DELETE is specified, information usable in
* creating, renaming, or deleting a directory entry may be calculated.
* If flag has LOCKPARENT or'ed into it, the parent directory is returned
* locked. If flag has WANTPARENT or'ed into it, the parent directory is
* If cn_flags has LOCKPARENT or'ed into it, the parent directory is returned
* locked. If it has WANTPARENT or'ed into it, the parent directory is
* returned unlocked. Otherwise the parent directory is not returned. If
* the target of the pathname exists and LOCKLEAF is or'ed into the flag
* the target of the pathname exists and LOCKLEAF is or'ed into the cn_flags
* the target is returned locked, otherwise it is returned unlocked.
* When creating or renaming and LOCKPARENT is specified, the target may not
* be ".". When deleting and LOCKPARENT is specified, the target may be ".".
*
* Overall outline of lookup:
*
* handle degenerate case where name is null string
*
* dirloop:
* identify next component of name at ndp->ni_cnd.cn_nameptr
* handle degenerate case where name is null string
* handle .. special cases related to capabilities, chroot, jail
* if .. and crossing mount points and on mounted filesys, find parent
* call VOP_LOOKUP routine for next component name
* directory vnode returned in ni_dvp, unlocked unless LOCKPARENT set
* component vnode returned in ni_vp (if it exists), locked.
* if result vnode is mounted on and crossing mount points,
* find mounted on vnode
* if more components of name, do next level at dirloop
* if VOP_LOOKUP returns ERELOOKUP, repeat the same level at dirloop
* return the answer in ni_vp, locked if LOCKLEAF set
* if LOCKPARENT set, return locked parent in ni_dvp
* if WANTPARENT set, return unlocked parent in ni_dvp
Expand Down

0 comments on commit d59b187

Please sign in to comment.