Home | History | Annotate | Download | only in man9
History log of /src/share/man/man9/vnodeops.9
RevisionDateAuthorComments
 1.101  15-Jun-2023  hannken VOP_IOCTL() is a wrapper around spec_ioctl() aka Xdev_ioctl() and
protected with spec_io_enter()/spec_io_exit() so there is no need
to force specific vnode locking.

Set locking requirement to '= = =' (unchanged, locked or unlocked).

PR kern/57450 (unplugging hung USB disk triggers panic via _vstate_assert)
 1.100  19-Nov-2017  christos branches: 1.100.14;
Fix locking info for VOP_RECLAIM.
 1.99  03-Jul-2017  wiz Remove workaround for ancient HTML generation code.
 1.98  11-Apr-2017  riastradh Make VOP_INACTIVE preserve vnode lock on return.

Discussed on tech-kern:
https://mail-index.netbsd.org/tech-kern/2017/04/01/msg021751.html

Ride 7.99.68, a bumpy bus of incremental vfs improvements!
 1.97  25-Jan-2016  christos branches: 1.97.2; 1.97.4;
we don't have va_mask
 1.96  25-Jul-2014  wiz New sentence, new line. Punctuation formatting nits.
 1.95  25-Jul-2014  dholland Add VOP_FALLOCATE and VOP_FDISCARD.
 1.94  21-Jul-2014  dholland Adjustments based on suggestions from gnrp in PR 45276:
- fix argument names of VOP_REMOVE
- mention deprecated behavior of calling VOP_GETATTR unlocked
- mention rename lock
 1.93  27-Feb-2014  hannken branches: 1.93.2;
The current implementation of vn_lock() is racy. Modification of
the vnode operations vector for active vnodes is unsafe because it
is not known whether deadfs or the original file system will be
called.

- Pass down LK_RETRY to the lock operation (hint for deadfs only).

- Change deadfs lock operation to return ENOENT if LK_RETRY is unset.

- Change all other lock operations to check for dead vnode once
the vnode is locked and unlock and return ENOENT in this case.

With these changes in place vnode lock operations will never succeed
after vclean() has marked the vnode as VI_XLOCK and before vclean()
has changed the operations vector.

Adresses PR kern/37706 (Forced unmount of file systems is unsafe)

Discussed on tech-kern.

Welcome to 6.99.33
 1.92  07-Feb-2014  hannken Change vnode operation lookup to return the resulting vnode *vpp unlocked.
Change cache_lookup() to return an unlocked vnode.

Discussed on tech-kern@

Welcome to 6.99.31
 1.91  23-Jan-2014  hannken Change vnode operations create, mknod, mkdir and symlink to return
the resulting vnode *vpp unlocked.

Discussed on tech-kern@

Welcome to 6.99.30
 1.90  17-Jan-2014  hannken Change vnode operations create, mknod, mkdir and symlink to keep the
directory node dvp locked on return.

Discussed on tech-kern@

Welcome to 6.99.29
 1.89  05-Nov-2012  wiz Bump date for previous.
 1.88  05-Nov-2012  dholland These two man pages contain complete cut and paste copies of struct
componentname and/or struct nameidata. Update the copies, for both
today's changes and a number of earlier changes too.
 1.87  01-Oct-2012  wiz Mark up defines with Dv.
(Leave Brq for now.)
 1.86  01-Oct-2012  njoly Update _PC_NO_TRUNC description to add the returned value, and
replace non-existant KERN_NAME_MAX with {NAME_MAX}.
 1.85  07-Jun-2012  agc branches: 1.85.2;
Fix a typo
 1.84  13-Feb-2012  wiz Add locking description to some functions.
Add FILES section referencing source code.
From Julian Fagir in PR 45988.
 1.83  18-Jul-2011  dholland branches: 1.83.2;
typo
 1.82  11-Jul-2011  hannken Change VOP_BWRITE() to take a vnode as its first argument like all other
VOPs do. Layered file systems no longer have to modify bp->b_vp and run
into trouble when an async VOP_BWRITE() uses the wrong vnode.

- change all occurences of VOP_BWRITE(bp) to VOP_BWRITE(bp->b_vp, bp).
- remove layer_bwrite().
- welcome to 5.99.55

Adresses PR kern/38762 panic: vwakeup: neg numoutput

No objections from tech-kern@.
 1.81  14-Jun-2011  rmind VOP_LEASE(9) was removed long ago. Misc improvement.
 1.80  24-Jun-2010  hannken branches: 1.80.4;
Clean up vnode lock operations pass 2:

VOP_UNLOCK(vp, flags) -> VOP_UNLOCK(vp): Remove the unneeded flags argument.

Welcome to 5.99.32.

Discussed on tech-kern.
 1.79  24-Jun-2010  hannken Clean up vnode lock operations:

- VOP_LOCK(vp, flags): Limit the set of allowed flags to LK_EXCLUSIVE,
LK_SHARED and LK_NOWAIT. LK_INTERLOCK is no longer allowed as it
makes no sense here.

- VOP_ISLOCKED(vp): Remove the for some time unused return value
LK_EXCLOTHER. Mark this operation as "diagnostic only".
Making a lock decision based on this operation is no longer allowed.

Discussed on tech-kern.
 1.78  19-May-2010  pooka * document VOP_DELETEEXTATTR
* remove "vector element" from summary table:
1) deleteextattr caused problems for 80col rendering
2) it's not correct on NetBSD, we use the VOFFSET instead (!)
 1.77  04-May-2009  wiz branches: 1.77.2;
Sort errors.
 1.76  15-Mar-2009  joerg Convert to mdoc.
XXX groff is rather stupid in the way it handles the list
 1.75  04-Aug-2008  pooka branches: 1.75.4;
fix VOP_ISLOCKED description

noticed by Adam Burkepile
 1.74  31-May-2008  enami No comma is necessary for the last .Nm entry.
 1.73  30-Apr-2008  martin branches: 1.73.2;
Convert TNF licenses to new 2 clause variant
 1.72  20-Mar-2008  mjf branches: 1.72.2; 1.72.4;
struct componentname has no cn_lwp member anymore. Also update the data
types for the other struct members so they actually reflect sys/sys/namei.h
 1.71  19-Jan-2008  pooka branches: 1.71.2;
improve readdir, abortop and bmap description

PR kern/15062 by Love
 1.70  01-Dec-2007  wiz Spelling, HTML output fix.
 1.69  26-Nov-2007  pooka "struct lwp *l" is a goner from VFS/VOP interfaces.
 1.68  24-Aug-2007  pooka branches: 1.68.2;
fix/clarify VOP_CLOSE
 1.67  30-Jul-2007  rumble branches: 1.67.4;
Be more specific in the description of VOP_READDIR:
- uio->uio_offset must be set to the offset of the next directory entry.
- each cookie entry points to the next directory entry's offset, not the
current entry's offset.
- cookies must be callee allocated with malloc type M_TEMP.
 1.66  27-Jul-2007  pooka VOP_MMAP fflags -> prot
 1.65  28-Jun-2007  rumble Fix typo.
 1.64  24-Jun-2007  rumble TRUE -> true, FALSE -> false.
 1.63  13-May-2007  tnn fix typos
 1.62  07-May-2007  pooka make description of VOP_MMAP compatible with reality
 1.61  29-Mar-2007  pooka fix definition of runp in VOP_BMAP
 1.60  23-Dec-2006  wiz Bump date for previous.
 1.59  09-Dec-2006  chs a smorgasbord of improvements to vnode locking and path lookup:
- LOCKPARENT is no longer relevant for lookup(), relookup() or VOP_LOOKUP().
these now always return the parent vnode locked. namei() works as before.
lookup() and various other paths no longer acquire vnode locks in the
wrong order via vrele(). fixes PR 32535.
as a nice side effect, path lookup is also up to 25% faster.
- the above allows us to get rid of PDIRUNLOCK.
- also get rid of WANTPARENT (just use LOCKPARENT and unlock it).
- remove an assumption in layer_node_find() that all file systems implement
a recursive VOP_LOCK() (unionfs doesn't).
- require that all file systems supply vfs_vptofh and vfs_fhtovp routines.
fill in eopnotsupp() for file systems that don't support being exported
and remove the checks for NULL. (layerfs calls these without checking.)
- in union_lookup1(), don't change refcounts in the ISDOTDOT case, just
adjust which vnode is locked. fixes PR 33374.
- apply fixes for ufs_rename() from ufs_vnops.c rev. 1.61 to ext2fs_rename().
 1.58  28-Nov-2006  pooka branches: 1.58.2;
match description of VOP_PUTPAGES with reality
 1.57  19-Oct-2006  pooka VOP_RENAME synopsis:
* tdvp points to a vnode, not a componentname.
* name of the source vnode is fvp, not vp
 1.56  08-Oct-2006  pooka VOP_REMOVE is supposed to vput the arguments before returning instead
of keeping them locked
 1.55  05-Oct-2006  chs add support for O_DIRECT (I/O directly to application memory,
bypassing any kernel caching for file data).
 1.54  04-Oct-2006  reinoud Fix confusing statement on locking and contradiction in the VOP_RECLAIM()
explanation.

It told the node vp would be locked on entry and later told that the vnode
is unlocked on entry and should remain unlocked on exit.
 1.53  04-Oct-2006  pooka ucred -> kauth sweep
 1.52  30-Sep-2006  jld Remove erroneous boilerplate about VOP_POLL's return value (which was
already described correctly earlier in the paragraph).
 1.51  16-Sep-2006  wiz Use macro for HTML output.
 1.50  16-Sep-2006  yamt VOP_ADVLOCK: document the current unnatural handling of SEEK_CUR.
pointed by efnbl06 at bn2.maus.net.
 1.49  16-Sep-2006  yamt VOP_ADVLOCK: fix a description of vp. pointed by efnbl06 at bn2.maus.net.
 1.48  23-Aug-2006  wiz Bump date for previous.
 1.47  17-Aug-2006  jld vnode_if.src says that VOP_POLL's vnode is unlocked, and has said so
since 1998; adjust the man page to reflect that.
 1.46  05-Apr-2006  rtr fix typo
 1.45  30-Mar-2006  rpaulo Fix more proc/lwp conversions. From Gregory McGarry in private email.
 1.44  11-Mar-2006  wiz Bump date for previous.
 1.43  04-Mar-2006  rumble Mention VOP_KQFILTER briefly. Its description could be more thorough, but
I am unfamiliar with the kqueue framework. Also fix a typo while we're
here.
 1.42  20-Dec-2005  rpaulo Adapt man pages to ktrace-lwp.
 1.41  02-Nov-2005  yamt sync with kernel. (yamt-vop)
 1.40  31-Oct-2005  wiz Bump date for previous.
 1.39  30-Oct-2005  erh Mention that VOP_CREATE always unlocks the directory vnode.
 1.38  09-Sep-2005  wiz Uppercase I/O.
 1.37  30-Aug-2005  jmmv Sync the description of the getattr, link and rmdir operations with reality
as regards vnode locking. Thanks to wrstuden@ for clarifying this.
 1.36  19-Aug-2005  jmmv Specify the types for the cookies and ncookies parameters to the readdir
operation.
 1.35  11-Aug-2005  pooka apply cosmetics to VOP_MK/RMDIR prototypes
 1.34  11-Aug-2005  pooka match section on read/write ioflags with current reality
(bump date!)
 1.33  11-Jan-2005  chs typoes.
 1.32  02-Jan-2005  wiz Mark up NULL, and replace null by nul where appropriate.
 1.31  02-Jan-2005  thorpej Document file system extended attribute functions.
 1.30  25-Jun-2004  wiz Fix Dd argument.
 1.29  23-Apr-2004  simonb s/the the/the/ (only in sources that aren't regularly imported from
elsewhere).
 1.28  25-Jan-2004  hannken Make VOP_STRATEGY(bp) a real VOP as discussed on tech-kern.

VOP_STRATEGY(bp) is replaced by one of two new functions:

- VOP_STRATEGY(vp, bp) Call the strategy routine of vp for bp.
- DEV_STRATEGY(bp) Call the d_strategy routine of bp->b_dev for bp.

DEV_STRATEGY(bp) is used only for block-to-block device situations.
 1.27  04-Jul-2003  wiz Punctuation fix and grammar fix.
 1.26  01-Jul-2003  wiz Remove superfluous .Fc.
 1.25  30-Jun-2003  wiz Fixes to make these man page look nice with groff-1.19.
 1.24  19-Jun-2003  yamt note when VOP_GETPAGES updates number of pages pointed by 'count'.
 1.23  09-Jun-2003  yamt correct arguments of VOP_GETPAGES.
 1.22  14-May-2003  wiz setup -> set up.
 1.21  01-May-2003  yamt mdoc improvement.
(use the longest tag for width specifier)
 1.20  01-May-2003  yamt redo a half of the previous correctly.
('op' arg of VOP_ADVLOCK)
 1.19  01-May-2003  yamt VOP_ADVLOCK:
F_{RD,WR,UN}LCK is not for 'flags'.
 1.18  24-Apr-2003  wiz Use .Aq instead of \*[Lt]...\*[Gt].
 1.17  20-Apr-2003  gmcgarry Update to reflect caddr_t -> void * change.
 1.16  16-Apr-2003  wiz Use
.In header.h
instead of
.Fd #include \*[Lt]header.h\*[Gt]
Much easier to read and write, and supported by groff for ages.
Okayed by ross.
 1.15  03-Jan-2003  jschauma Fix typos noted by Igor Sobrado in PR misc/19641 (some already fixed
by others):

MCHTYPE(9) - implemntation (implementation)
VFS_CHECKEXP(9) - specied (specified), acces (access)
VOP_ABORTOP(9) - singla (single), implments (implements),
callling (calling), credientials (credentials)
 1.14  14-Oct-2002  wiz New sentence, new line.
 1.13  14-Oct-2002  gmcgarry Slight markup.
 1.12  14-Aug-2002  soren Misc fixes.
Cross-reference v*ops.9.
 1.11  19-Jul-2002  yamt usually, VOP_SEEK checks new offset, not old one.
 1.10  29-Jun-2002  gmcgarry Document flags to VOP_UPDATE().
 1.9  13-Feb-2002  ross Generate <>& symbolically. I'm avoiding .../dist/... directories for now.
 1.8  07-Feb-2002  ross Edit -mdoc usage.

* There is no -indent option to .Bd or .Bl, although you would
never know that from its frequent use in this tree. There is a
"-offset indent" combination that makes sense, and you can certainly
say "-width indent".

* Also, you can't markup the -width option argument, tho you CAN
use a callable macro. So "-width Ar filename" doesn't make sense,
but either "-width Ar" or "-width filename" does, as might something
like "-width xxfilename" for a little extra space.

* There are a lot of needlessly complex hanging tag macros in man4 used
to create simple item lists. Those should be simplified one of these
days before someone copies and edits yet another man4 page.
 1.7  01-Feb-2002  eeh De-clunikfy some grammar.
 1.6  06-Jan-2002  deberg add VOP_GETPAGES to NAME and create link
 1.5  26-Oct-2001  yamt - VOP_READDIR will remain vnode locked.
- our VOP_FSYNC doesn't have argument "waitfor".
- IO_SYNC is synchronous.
- remove a repeated sentence in VOP_UNLOCK.
- fix some misspells.
 1.4  26-Oct-2001  yamt s/falg/flag/
 1.3  22-Oct-2001  gmcgarry fnctl -> fcntl
 1.2  22-Oct-2001  wiz Whitespace, punctuation fixes; sort sections, fix xrefs.
 1.1  22-Oct-2001  gmcgarry Programmer's guide to the VFS interface.
 1.58.2.1  17-Feb-2007  tron Apply patch (requested by chs in ticket #422):
- Fix various deadlock problems with nullfs and unionfs.
- Speed up path lookups by upto 25%.
 1.67.4.2  30-Jul-2007  rumble Be more specific in the description of VOP_READDIR:
- uio->uio_offset must be set to the offset of the next directory entry.
- each cookie entry points to the next directory entry's offset, not the
current entry's offset.
- cookies must be callee allocated with malloc type M_TEMP.
 1.67.4.1  30-Jul-2007  rumble file vnodeops.9 was added on branch matt-mips64 on 2007-07-30 03:25:51 +0000
 1.68.2.2  23-Mar-2008  matt sync with HEAD
 1.68.2.1  09-Jan-2008  matt sync with HEAD
 1.71.2.1  24-Mar-2008  keiichi sync with head.
 1.72.4.2  04-Jun-2008  yamt sync with head
 1.72.4.1  18-May-2008  yamt sync with head.
 1.72.2.3  05-Oct-2008  mjf Sync with HEAD.
 1.72.2.2  02-Jun-2008  mjf Sync with HEAD.
 1.72.2.1  20-Mar-2008  mjf file vnodeops.9 was added on branch mjf-devfs2 on 2008-06-02 13:21:42 +0000
 1.73.2.2  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.73.2.1  23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.75.4.1  13-May-2009  jym Sync with HEAD.

Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html
 1.77.2.1  17-Aug-2010  uebayasi Sync with HEAD.
 1.80.4.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.83.2.4  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.83.2.3  16-Jan-2013  yamt sync with (a bit old) head
 1.83.2.2  30-Oct-2012  yamt sync with head
 1.83.2.1  17-Apr-2012  yamt sync with head
 1.85.2.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.85.2.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.93.2.1  10-Aug-2014  tls Rebase.
 1.97.4.1  21-Apr-2017  bouyer Sync with HEAD
 1.97.2.1  26-Apr-2017  pgoyette Sync with HEAD
 1.100.14.1  21-Jun-2023  martin Pull up following revision(s) (requested by hannken in ticket #197):

sys/kern/vnode_if.src: revision 1.85
share/man/man9/vnodeops.9: revision 1.101

VOP_IOCTL() is a wrapper around spec_ioctl() aka Xdev_ioctl() and
protected with spec_io_enter()/spec_io_exit() so there is no need
to force specific vnode locking.
Set locking requirement to '= = =' (unchanged, locked or unlocked).

RSS XML Feed