diff options
-rw-r--r-- | share/man/man9/Makefile | 3 | ||||
-rw-r--r-- | share/man/man9/vput.9 | 63 | ||||
-rw-r--r-- | share/man/man9/vrele.9 | 54 |
3 files changed, 49 insertions, 71 deletions
diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile index 194eba4..2198a6f 100644 --- a/share/man/man9/Makefile +++ b/share/man/man9/Makefile @@ -364,7 +364,6 @@ MAN= accept_filter.9 \ VOP_STRATEGY.9 \ VOP_VPTOCNP.9 \ VOP_VPTOFH.9 \ - vput.9 \ vref.9 \ vrefcnt.9 \ vrele.9 \ @@ -1366,6 +1365,8 @@ MLINKS+=VOP_RDWR.9 VOP_READ.9 \ VOP_RDWR.9 VOP_WRITE.9 MLINKS+=VOP_REMOVE.9 VOP_RMDIR.9 MLINKS+=vref.9 VREF.9 +MLINKS+=vrele.9 vput.9 \ + vrele.9 vunref.9 MLINKS+=vslock.9 vsunlock.9 MLINKS+=zero_copy.9 zero_copy_sockets.9 MLINKS+=zone.9 uma.9 \ diff --git a/share/man/man9/vput.9 b/share/man/man9/vput.9 deleted file mode 100644 index d915539..0000000 --- a/share/man/man9/vput.9 +++ /dev/null @@ -1,63 +0,0 @@ -.\" -*- nroff -*- -.\" -.\" Copyright (c) 1996 Doug Rabson -.\" -.\" All rights reserved. -.\" -.\" This program is free software. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR -.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, -.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.\" -.\" $FreeBSD$ -.\" -.Dd July 24, 1996 -.Dt VPUT 9 -.Os -.Sh NAME -.Nm vput -.Nd "decrement the use count for a vnode and unlock it" -.Sh SYNOPSIS -.In sys/param.h -.In sys/vnode.h -.Ft void -.Fn vput "struct vnode *vp" -.Sh DESCRIPTION -Decrement the -.Va v_usecount -field of a vnode and unlock the vnode. -.Bl -tag -width 2n -.It Fa vp -the vnode to decrement -.El -.Pp -This operation is functionally equivalent to calling -.Xr VOP_UNLOCK 9 -followed by -.Xr vrele 9 . -.Sh SEE ALSO -.Xr vnode 9 , -.Xr VOP_UNLOCK 9 , -.Xr vref 9 , -.Xr vrele 9, -.Xr vrefcnt 9 -.Sh AUTHORS -This manual page was written by -.An Doug Rabson . diff --git a/share/man/man9/vrele.9 b/share/man/man9/vrele.9 index be5d5f7..8d28d5e 100644 --- a/share/man/man9/vrele.9 +++ b/share/man/man9/vrele.9 @@ -1,6 +1,7 @@ .\" -*- nroff -*- .\" .\" Copyright (c) 1996 Doug Rabson +.\" Copyright (c) 2010 Konstantin Belousov <kib@FreeBSD.org> .\" .\" All rights reserved. .\" @@ -28,17 +29,23 @@ .\" .\" $FreeBSD$ .\" -.Dd July 24, 1996 +.Dd October 17, 2010 .Dt VRELE 9 .Os .Sh NAME -.Nm vrele +.Nm vput , +.Nm vrele , +.Nm vunref .Nd decrement the use count for a vnode .Sh SYNOPSIS .In sys/param.h .In sys/vnode.h .Ft void +.Fn vput "struct vnode *vp" +.Ft void .Fn vrele "struct vnode *vp" +.Ft void +.Fn vunref "struct vnode *vp" .Sh DESCRIPTION Decrement the .Va v_usecount @@ -48,18 +55,51 @@ field of a vnode. the vnode to decrement .El .Pp -Any code in the system which is using a vnode should call +The .Fn vrele -when it is finished with the vnode. +function takes an unlocked vnode and returns with the vnode unlocked. +.Pp +.The +.Fn vput +function should be given a locked vnode as argument, the vnode is unlocked +after the function returned. +The +.Fn vput +is operationally equivalent to calling +.Xr VOP_UNLOCK 9 +followed by +.Xr vrele 9 , +with less overhead. +.Pp +The +.Fn vunref +function takes a locked vnode as argument, and returns with the vnode locked. +Nonetheless, the +.Fn vunref +might drop the vnode lock during the operation, so caller should not expect +that non-doomed vnode is still non-doomed after the function returned. +.Pp +Any code in the system which signified its use of a vnode by usecount +should call one of the listed function to decrement use counter. If the .Va v_usecount -field of the vnode reaches zero, then it will be placed on the free list. +field of the non-doomed vnode reaches zero, then it will be inactivated +and placed on the free list. +Since the functions might need to call VOPs for the vnode, the +.Va Giant +mutex should be conditionally locked around the call. +.Pp +The hold count for the vnode is always greater or equal to the usecount. +Non-forced unmount fails when mount point owns a vnode that has non-zero +usecount, see +.Xr vflush 9 . .Sh SEE ALSO .Xr vget 9 , .Xr vnode 9 , -.Xr vput 9 , .Xr vref 9 , .Xr vrefcnt 9 .Sh AUTHORS This manual page was written by -.An Doug Rabson . +.An Doug Rabson +and +.An Konstantin Belousov . |