Module Name: src
Committed By: hannken
Date: Sun Jul 12 08:11:28 UTC 2015
Modified Files:
src/distrib/sets/lists/comp: mi
src/share/man/man9: Makefile vfsops.9 vnode.9
src/sys/kern: vfs_vnode.c
src/sys/sys: param.h vnode.h
Log Message:
Operations getnewvnode() and ungetnewvnode() have been replaced with vcache.
- Remove now obsolete functions getnewvnode() and ungetnewvnode().
- Document vcache operations.
Welcome to 7.99.20
To generate a diff of this commit:
cvs rdiff -u -r1.1969 -r1.1970 src/distrib/sets/lists/comp/mi
cvs rdiff -u -r1.387 -r1.388 src/share/man/man9/Makefile
cvs rdiff -u -r1.46 -r1.47 src/share/man/man9/vfsops.9
cvs rdiff -u -r1.68 -r1.69 src/share/man/man9/vnode.9
cvs rdiff -u -r1.44 -r1.45 src/sys/kern/vfs_vnode.c
cvs rdiff -u -r1.481 -r1.482 src/sys/sys/param.h
cvs rdiff -u -r1.255 -r1.256 src/sys/sys/vnode.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/distrib/sets/lists/comp/mi
diff -u src/distrib/sets/lists/comp/mi:1.1969 src/distrib/sets/lists/comp/mi:1.1970
--- src/distrib/sets/lists/comp/mi:1.1969 Sat Jun 27 15:47:29 2015
+++ src/distrib/sets/lists/comp/mi Sun Jul 12 08:11:27 2015
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1969 2015/06/27 15:47:29 matt Exp $
+# $NetBSD: mi,v 1.1970 2015/07/12 08:11:27 hannken Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
#
@@ -9790,7 +9790,9 @@
./usr/share/man/cat9/VATTR_NULL.0 comp-obsolete obsolete
./usr/share/man/cat9/VFS_CHECKEXP.0 comp-sys-catman .cat
./usr/share/man/cat9/VFS_FHTOVP.0 comp-sys-catman .cat
+./usr/share/man/cat9/VFS_LOADVNODE.0 comp-sys-catman .cat
./usr/share/man/cat9/VFS_MOUNT.0 comp-sys-catman .cat
+./usr/share/man/cat9/VFS_NEWVNODE.0 comp-sys-catman .cat
./usr/share/man/cat9/VFS_QUOTACTL.0 comp-sys-catman .cat
./usr/share/man/cat9/VFS_ROOT.0 comp-sys-catman .cat
./usr/share/man/cat9/VFS_SNAPSHOT.0 comp-sys-catman .cat
@@ -10311,7 +10313,7 @@
./usr/share/man/cat9/getmicrouptime.0 comp-sys-catman .cat
./usr/share/man/cat9/getnanotime.0 comp-sys-catman .cat
./usr/share/man/cat9/getnanouptime.0 comp-sys-catman .cat
-./usr/share/man/cat9/getnewvnode.0 comp-sys-catman .cat
+./usr/share/man/cat9/getnewvnode.0 comp-obsolete obsolete
./usr/share/man/cat9/gsignal.0 comp-obsolete obsolete
./usr/share/man/cat9/hardclock.0 comp-sys-catman .cat
./usr/share/man/cat9/hash.0 comp-sys-catman .cat
@@ -11048,7 +11050,7 @@
./usr/share/man/cat9/ucas.0 comp-sys-catman .cat
./usr/share/man/cat9/ucom.0 comp-sys-catman .cat
./usr/share/man/cat9/uiomove.0 comp-sys-catman .cat
-./usr/share/man/cat9/ungetnewvnode.0 comp-sys-catman .cat
+./usr/share/man/cat9/ungetnewvnode.0 comp-obsolete obsolete
./usr/share/man/cat9/untimeout.0 comp-sys-catman .cat
./usr/share/man/cat9/uprintf.0 comp-sys-catman .cat
./usr/share/man/cat9/usbd_status.0 comp-sys-catman .cat
@@ -11113,6 +11115,11 @@
./usr/share/man/cat9/vaccess.0 comp-sys-catman .cat
./usr/share/man/cat9/vattr.0 comp-sys-catman .cat
./usr/share/man/cat9/vattr_null.0 comp-sys-catman .cat
+./usr/share/man/cat9/vcache_get.0 comp-sys-catman .cat
+./usr/share/man/cat9/vcache_new.0 comp-sys-catman .cat
+./usr/share/man/cat9/vcache_rekey_enter.0 comp-sys-catman .cat
+./usr/share/man/cat9/vcache_rekey_exit.0 comp-sys-catman .cat
+./usr/share/man/cat9/vcache_remove.0 comp-sys-catman .cat
./usr/share/man/cat9/vcons.0 comp-sys-catman .cat
./usr/share/man/cat9/vcount.0 comp-obsolete obsolete
./usr/share/man/cat9/vdead_check.0 comp-sys-catman .cat
@@ -16624,7 +16631,9 @@
./usr/share/man/html9/VATTR_NULL.html comp-obsolete obsolete
./usr/share/man/html9/VFS_CHECKEXP.html comp-sys-htmlman html
./usr/share/man/html9/VFS_FHTOVP.html comp-sys-htmlman html
+./usr/share/man/html9/VFS_LOADVNODE.html comp-sys-htmlman html
./usr/share/man/html9/VFS_MOUNT.html comp-sys-htmlman html
+./usr/share/man/html9/VFS_NEWVNODE.html comp-sys-htmlman html
./usr/share/man/html9/VFS_QUOTACTL.html comp-sys-htmlman html
./usr/share/man/html9/VFS_ROOT.html comp-sys-htmlman html
./usr/share/man/html9/VFS_SNAPSHOT.html comp-sys-htmlman html
@@ -17114,7 +17123,7 @@
./usr/share/man/html9/getmicrouptime.html comp-sys-htmlman html
./usr/share/man/html9/getnanotime.html comp-sys-htmlman html
./usr/share/man/html9/getnanouptime.html comp-sys-htmlman html
-./usr/share/man/html9/getnewvnode.html comp-sys-htmlman html
+./usr/share/man/html9/getnewvnode.html comp-obsolete obsolete
./usr/share/man/html9/gsignal.html comp-obsolete obsolete
./usr/share/man/html9/hardclock.html comp-sys-htmlman html
./usr/share/man/html9/hash.html comp-sys-htmlman html
@@ -17821,7 +17830,7 @@
./usr/share/man/html9/ucas.html comp-sys-htmlman html
./usr/share/man/html9/ucom.html comp-sys-htmlman html
./usr/share/man/html9/uiomove.html comp-sys-htmlman html
-./usr/share/man/html9/ungetnewvnode.html comp-sys-htmlman html
+./usr/share/man/html9/ungetnewvnode.html comp-obsolete obsolete
./usr/share/man/html9/untimeout.html comp-sys-htmlman html
./usr/share/man/html9/uprintf.html comp-sys-htmlman html
./usr/share/man/html9/usbd_status.html comp-sys-htmlman html
@@ -17873,6 +17882,11 @@
./usr/share/man/html9/vaccess.html comp-sys-htmlman html
./usr/share/man/html9/vattr.html comp-sys-htmlman html
./usr/share/man/html9/vattr_null.html comp-sys-htmlman html
+./usr/share/man/html9/vcache_get.html comp-sys-htmlman html
+./usr/share/man/html9/vcache_new.html comp-sys-htmlman html
+./usr/share/man/html9/vcache_rekey_enter.html comp-sys-htmlman html
+./usr/share/man/html9/vcache_rekey_exit.html comp-sys-htmlman html
+./usr/share/man/html9/vcache_remove.html comp-sys-htmlman html
./usr/share/man/html9/vcons.html comp-sys-htmlman html
./usr/share/man/html9/vcount.html comp-obsolete obsolete
./usr/share/man/html9/vdead_check.html comp-sys-htmlman html
@@ -23549,7 +23563,9 @@
./usr/share/man/man9/VATTR_NULL.9 comp-obsolete obsolete
./usr/share/man/man9/VFS_CHECKEXP.9 comp-sys-man .man
./usr/share/man/man9/VFS_FHTOVP.9 comp-sys-man .man
+./usr/share/man/man9/VFS_LOADVNODE.9 comp-sys-man .man
./usr/share/man/man9/VFS_MOUNT.9 comp-sys-man .man
+./usr/share/man/man9/VFS_NEWVNODE.9 comp-sys-man .man
./usr/share/man/man9/VFS_QUOTACTL.9 comp-sys-man .man
./usr/share/man/man9/VFS_ROOT.9 comp-sys-man .man
./usr/share/man/man9/VFS_SNAPSHOT.9 comp-sys-man .man
@@ -24070,7 +24086,7 @@
./usr/share/man/man9/getmicrouptime.9 comp-sys-man .man
./usr/share/man/man9/getnanotime.9 comp-sys-man .man
./usr/share/man/man9/getnanouptime.9 comp-sys-man .man
-./usr/share/man/man9/getnewvnode.9 comp-sys-man .man
+./usr/share/man/man9/getnewvnode.9 comp-obsolete obsolete
./usr/share/man/man9/gsignal.9 comp-obsolete obsolete
./usr/share/man/man9/hardclock.9 comp-sys-man .man
./usr/share/man/man9/hash.9 comp-sys-man .man
@@ -24807,7 +24823,7 @@
./usr/share/man/man9/ucas.9 comp-sys-man .man
./usr/share/man/man9/ucom.9 comp-sys-man .man
./usr/share/man/man9/uiomove.9 comp-sys-man .man
-./usr/share/man/man9/ungetnewvnode.9 comp-sys-man .man
+./usr/share/man/man9/ungetnewvnode.9 comp-obsolete obsolete
./usr/share/man/man9/untimeout.9 comp-sys-man .man
./usr/share/man/man9/uprintf.9 comp-sys-man .man
./usr/share/man/man9/usbd_status.9 comp-sys-man .man
@@ -24872,6 +24888,11 @@
./usr/share/man/man9/vaccess.9 comp-sys-man .man
./usr/share/man/man9/vattr.9 comp-sys-man .man
./usr/share/man/man9/vattr_null.9 comp-sys-man .man
+./usr/share/man/man9/vcache_get.9 comp-sys-man .man
+./usr/share/man/man9/vcache_new.9 comp-sys-man .man
+./usr/share/man/man9/vcache_rekey_enter.9 comp-sys-man .man
+./usr/share/man/man9/vcache_rekey_exit.9 comp-sys-man .man
+./usr/share/man/man9/vcache_remove.9 comp-sys-man .man
./usr/share/man/man9/vcons.9 comp-sys-man .man
./usr/share/man/man9/vcount.9 comp-obsolete obsolete
./usr/share/man/man9/vdead_check.9 comp-sys-man .man
Index: src/share/man/man9/Makefile
diff -u src/share/man/man9/Makefile:1.387 src/share/man/man9/Makefile:1.388
--- src/share/man/man9/Makefile:1.387 Thu May 14 00:08:44 2015
+++ src/share/man/man9/Makefile Sun Jul 12 08:11:27 2015
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.387 2015/05/14 00:08:44 pgoyette Exp $
+# $NetBSD: Makefile,v 1.388 2015/07/12 08:11:27 hannken Exp $
# Makefile for section 9 (kernel function and variable) manual pages.
@@ -879,6 +879,8 @@ MLINKS+=vfsops.9 VFS_MOUNT.9 \
vfsops.9 VFS_STATVFS.9 \
vfsops.9 VFS_SYNC.9 \
vfsops.9 VFS_VGET.9 \
+ vfsops.9 VFS_LOADVNODE.9 \
+ vfsops.9 VFS_NEWVNODE.9 \
vfsops.9 VFS_FHTOVP.9 \
vfsops.9 VFS_VPTOFH.9 \
vfsops.9 VFS_CHECKEXP.9 \
@@ -920,8 +922,11 @@ MLINKS+=vnode.9 vref.9 \
vnode.9 vput.9 \
vnode.9 vhold.9 \
vnode.9 holdrele.9 \
- vnode.9 getnewvnode.9 \
- vnode.9 ungetnewvnode.9 \
+ vnode.9 vcache_get.9 \
+ vnode.9 vcache_new.9 \
+ vnode.9 vcache_rekey_enter.9 \
+ vnode.9 vcache_rekey_exit.9 \
+ vnode.9 vcache_remove.9 \
vnode.9 vrecycle.9 \
vnode.9 vgone.9 \
vnode.9 vgonel.9 \
Index: src/share/man/man9/vfsops.9
diff -u src/share/man/man9/vfsops.9:1.46 src/share/man/man9/vfsops.9:1.47
--- src/share/man/man9/vfsops.9:1.46 Mon Feb 13 13:24:18 2012
+++ src/share/man/man9/vfsops.9 Sun Jul 12 08:11:27 2015
@@ -1,4 +1,4 @@
-.\" $NetBSD: vfsops.9,v 1.46 2012/02/13 13:24:18 wiz Exp $
+.\" $NetBSD: vfsops.9,v 1.47 2015/07/12 08:11:27 hannken Exp $
.\"
.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
.\" All rights reserved.
@@ -27,7 +27,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd February 13, 2012
+.Dd July 12, 2015
.Dt VFSOPS 9
.Os
.Sh NAME
@@ -40,6 +40,8 @@
.Nm VFS_STATVFS ,
.Nm VFS_SYNC ,
.Nm VFS_VGET ,
+.Nm VFS_LOADVNODE ,
+.Nm VFS_NEWVNODE ,
.Nm VFS_FHTOVP ,
.Nm VFS_VPTOFH ,
.Nm VFS_SNAPSHOT ,
@@ -68,6 +70,10 @@
.Ft int
.Fn VFS_VGET "struct mount *mp" "ino_t ino" "struct vnode **vpp"
.Ft int
+.Fn VFS_LOADVNODE "struct mount *mp" "struct vnode *vp" "const void *key" "size_t key_len" "const void **new_key"
+.Ft int
+.Fn VFS_NEWVNODE "struct mount *mp" "struct vnode *dvp" "struct vnode *vp" "struct vattr *vap" "kauth_cred_t cred" "size_t *key_len" "const void **new_key"
+.Ft int
.Fn VFS_FHTOVP "struct mount *mp" "struct fid *fhp" "struct vnode **vpp"
.Ft int
.Fn VFS_VPTOFH "struct vnode *vp" "struct fid *fhp" "size_t *fh_size"
@@ -132,6 +138,14 @@ Ta Flush file system buffers
Ta Dv VFS_VGET \
Ta Get vnode from file id
.\"
+.It int (*vfs_loadvnode)() \
+Ta Dv VFS_LOADVNODE \
+Ta Initialze vnode with file
+.\"
+.It int (*vfs_loadvnode)() \
+Ta Dv VFS_NEWVNODE \
+Ta Initialze vnode with new file
+.\"
.It int (*vfs_fhtovp)() \
Ta Dv VFS_FHTOVP \
Ta NFS file handle to vnode lookup
@@ -332,6 +346,42 @@ It is used internally by the UFS file sy
server to implement the READDIRPLUS NFS call.
If the file system does not support this function, it should return
.Er EOPNOTSUPP .
+.It Fn VFS_LOADVNODE "mp" "vp" "key" "key_len" "new_key"
+Initialise the vnode
+.Fa vp
+with the file identified by the arguments
+.Fa key
+and
+.Fa key_len
+for the file system specified by the mount structure
+.Fa mp .
+.Pp
+The new key is returned in the address specified by
+.Fa new_key .
+.Pp
+Caller of this function assures no other thread will try to load this file.
+.It Fn VFS_NEWVNODE "mp" "dvp" "vp" "vap" "cred" "key_len" "new_key"
+Initialise the vnode
+.Fa vp
+with a new file for the file system specified by the mount structure
+.Fa mp .
+.Pp
+The argument
+.Fa dvp
+points to the directory to create the file in.
+.Pp
+The argument
+.Fa vap
+points to the attributes for the file to create.
+.Pp
+The argument
+.Fa cred
+holds the credentials for the file to create.
+.Pp
+The key for the file is returned in the addresses specified by
+.Fa key_len
+and
+.Fa new_key .
.It Fn VFS_FHTOVP "mp" "fhp" "vpp"
Get the vnode for the file handle
.Fa fhp
Index: src/share/man/man9/vnode.9
diff -u src/share/man/man9/vnode.9:1.68 src/share/man/man9/vnode.9:1.69
--- src/share/man/man9/vnode.9:1.68 Mon Apr 20 19:36:55 2015
+++ src/share/man/man9/vnode.9 Sun Jul 12 08:11:27 2015
@@ -1,4 +1,4 @@
-.\" $NetBSD: vnode.9,v 1.68 2015/04/20 19:36:55 riastradh Exp $
+.\" $NetBSD: vnode.9,v 1.69 2015/07/12 08:11:27 hannken Exp $
.\"
.\" Copyright (c) 2001, 2005, 2006 The NetBSD Foundation, Inc.
.\" All rights reserved.
@@ -27,7 +27,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd April 20, 2015
+.Dd July 12, 2015
.Dt VNODE 9
.Os
.Sh NAME
@@ -39,8 +39,11 @@
.Nm vput ,
.Nm vhold ,
.Nm holdrele ,
-.Nm getnewvnode ,
-.Nm ungetnewvnode ,
+.Nm vcache_get ,
+.Nm vcache_new ,
+.Nm vcache_rekey_enter ,
+.Nm vcache_rekey_exit ,
+.Nm vcache_remove ,
.Nm vrecycle ,
.Nm vgone ,
.Nm vgonel ,
@@ -75,10 +78,15 @@
.Ft void
.Fn holdrele "struct vnode *vp"
.Ft int
-.Fn getnewvnode "enum vtagtype tag" "struct mount *mp" "int (**vops)(void *)" \
-"kmutex_t *slock" "struct vnode **vpp"
+.Fn vcache_get "struct mount *mp" "const void *key" "size_t key_len" "struct vnode **vpp"
+.Ft int
+.Fn vcache_new "struct mount *mp" "struct vnode *dvp" "struct vattr *vap" "kauth_cred_t cred" "struct vnode **vpp"
+.Ft int
+.Fn vcache_rekey_enter "struct mount *mp" "struct vnode *vp" "const void *old_key" "size_t old_key_len" "const void *new_key" "size_t new_key_len"
.Ft void
-.Fn ungetnewvnode "struct vnode *vp"
+.Fn vcache_rekey_exit "struct mount *mp" "struct vnode *vp" "const void *old_key" "size_t old_key_len" "const void *new_key" "size_t new_key_len"
+.Ft void
+.Fn vcache_remove "struct mount *mp" "const void *key" "size_t key_len"
.Ft int
.Fn vrecycle "struct vnode *vp"
.Ft void
@@ -358,7 +366,9 @@ must call
.Fn vget
to increment the reference count and retrieve it from the freelist.
When a user wants a new vnode for another file,
-.Fn getnewvnode
+.Fn vcache_get
+or
+.Fn vcache_new
is invoked to allocate a vnode and initialize it for the new file.
.Pp
The type of object the vnode represents is recorded by
@@ -632,51 +642,86 @@ Mark the vnode
as inactive by decrementing
.Em vp-\*[Gt]v_holdcnt
and moving the vnode from the holdlist to the freelist.
-.It Fn getnewvnode "tag" "mp" "vops" "slock" "vpp"
-Retrieve the next vnode from the freelist.
-.Fn getnewvnode
-allocates a new vnode.
-The new vnode is returned in the address specified by
+.It Fn vcache_get "mp" "key" "key_len" "vpp"
+Allocate a new vnode.
+The new vnode is returned referenced in the address specified by
.Fa vpp .
.Pp
The argument
.Fa mp
-is the mount point for the file system requested the new vnode.
-Before retrieving the new vnode, the file system is checked if it is
-busy (such as currently unmounting).
-An error is returned if the file system is unmounted.
+is the mount point for the file system to lookup the file in.
+.Pp
+The arguments
+.Fa key
+and
+.Fa key_len
+uniquely identify the file in the file system.
+.Pp
+If a vnode is successfully retrieved zero is returned, otherwise an
+appropriate error code is returned.
+.It Fn vcache_new "mp" "dvp" "vap" "cred" "vpp"
+Allocate a new vnode with a new file.
+The new vnode is returned referenced in the address specified by
+.Fa vpp .
.Pp
The argument
-.Fa tag
-is the vnode tag assigned to
-.Fa *vpp-\*[Gt]v_tag .
+.Fa mp
+is the mount point for the file system to create the file in.
+.Pp
The argument
-.Fa vops
-is the vnode operations vector of the file system requesting the new
-vnode.
-If a vnode is successfully retrieved zero is returned, otherwise an
+.Fa dvp
+points to the directory to create the file in.
+.Pp
+The argument
+.Fa vap
+points to the attributes for the file to create.
+.Pp
+The argument
+.Fa cred
+holds the credentials for the file to create.
+.Pp
+If a vnode is successfully created zero is returned, otherwise an
appropriate error code is returned.
-If
-.Fa slock
-is not
-.Dv NULL ,
-it specifies the lock to share for
-.Em v_interlock .
-The reference will be held on the lock and sharing noted.
-Reference will be released and lock unshared when the vnode gets recycled.
-If
-.Dv NULL
-(regular case), vnode will use its own interlock.
-.It Fn ungetnewvnode "vp"
-Undo the operation of
-.Fn getnewvnode .
+.It Fn vcache_rekey_enter "mp" "vp" "old_key" "old_key_len" "new_key" "new_key_len"
+Prepare to change the key of a cached vnode.
+.Pp
The argument
+.Fa mp
+is the mount point for the file system the vnode
.Fa vp
-is the vnode to return to the freelist.
-This function is needed for
-.Xr VFS_VGET 9
-which may need to push back a vnode in case of a locking race
-condition.
+resides in.
+.Pp
+The arguments
+.Fa old_key
+and
+.Fa old_key_len
+identify the cached vnode.
+.Pp
+The arguments
+.Fa new_key
+and
+.Fa new_key_len
+will identify the vnode after rename.
+.Pp
+If the new key already exists
+.Er EEXIST
+is returned, otherwise zero is returned.
+.It Fn vcache_rekey_exit "mp" "vp" "old_key" "old_key_len" "new_key" "new_key_len"
+Finish rename after calling
+.Fn vcache_rekey_enter .
+.It Fn vcache_remove "mp" "key" "key_len"
+Remove a vnode from the cache.
+Must be called when a file system reclaims a vnode.
+.Pp
+The argument
+.Fa mp
+is the mount point for the file system this file resides in.
+.Pp
+The arguments
+.Fa key
+and
+.Fa key_len
+uniquely identify the file in the file system.
.It Fn vrecycle "vp"
Recycle the referenced vnode
.Fa vp
Index: src/sys/kern/vfs_vnode.c
diff -u src/sys/kern/vfs_vnode.c:1.44 src/sys/kern/vfs_vnode.c:1.45
--- src/sys/kern/vfs_vnode.c:1.44 Tue Jun 23 10:41:59 2015
+++ src/sys/kern/vfs_vnode.c Sun Jul 12 08:11:28 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: vfs_vnode.c,v 1.44 2015/06/23 10:41:59 hannken Exp $ */
+/* $NetBSD: vfs_vnode.c,v 1.45 2015/07/12 08:11:28 hannken Exp $ */
/*-
* Copyright (c) 1997-2011 The NetBSD Foundation, Inc.
@@ -75,7 +75,7 @@
* VOP_CREATE(9) and VOP_LOOKUP(9). The life-cycle of a vnode
* starts in one of the following ways:
*
- * - Allocation, via getnewvnode(9) and/or vnalloc(9).
+ * - Allocation, via vcache_get(9) or vcache_new(9).
* - Reclamation of inactive vnode, via vget(9).
*
* Recycle from a free list, via getnewvnode(9) -> getcleanvnode(9)
@@ -116,7 +116,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_vnode.c,v 1.44 2015/06/23 10:41:59 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_vnode.c,v 1.45 2015/07/12 08:11:28 hannken Exp $");
#define _VFS_VNODE_PRIVATE
@@ -371,89 +371,6 @@ try_nextlist:
}
/*
- * getnewvnode: return a fresh vnode.
- *
- * => Returns referenced vnode, moved into the mount queue.
- * => Shares the interlock specified by 'slock', if it is not NULL.
- */
-int
-getnewvnode(enum vtagtype tag, struct mount *mp, int (**vops)(void *),
- kmutex_t *slock, vnode_t **vpp)
-{
- struct uvm_object *uobj __diagused;
- vnode_t *vp;
- int error = 0;
-
- if (mp != NULL) {
- /*
- * Mark filesystem busy while we are creating a vnode.
- * If unmount is in progress, this will fail.
- */
- error = vfs_busy(mp, NULL);
- if (error)
- return error;
- }
-
- vp = NULL;
-
- /* Allocate a new vnode. */
- vp = vnalloc(NULL);
-
- KASSERT(vp->v_freelisthd == NULL);
- KASSERT(LIST_EMPTY(&vp->v_nclist));
- KASSERT(LIST_EMPTY(&vp->v_dnclist));
- KASSERT(vp->v_data == NULL);
-
- /* Initialize vnode. */
- vp->v_tag = tag;
- vp->v_op = vops;
-
- uobj = &vp->v_uobj;
- KASSERT(uobj->pgops == &uvm_vnodeops);
- KASSERT(uobj->uo_npages == 0);
- KASSERT(TAILQ_FIRST(&uobj->memq) == NULL);
-
- /* Share the vnode_t::v_interlock, if requested. */
- if (slock) {
- /* Set the interlock and mark that it is shared. */
- KASSERT(vp->v_mount == NULL);
- mutex_obj_hold(slock);
- uvm_obj_setlock(&vp->v_uobj, slock);
- KASSERT(vp->v_interlock == slock);
- }
-
- /* Finally, move vnode into the mount queue. */
- vfs_insmntque(vp, mp);
-
- if (mp != NULL) {
- if ((mp->mnt_iflag & IMNT_MPSAFE) != 0)
- vp->v_vflag |= VV_MPSAFE;
- vfs_unbusy(mp, true, NULL);
- }
-
- *vpp = vp;
- return 0;
-}
-
-/*
- * This is really just the reverse of getnewvnode(). Needed for
- * VFS_VGET functions who may need to push back a vnode in case
- * of a locking race.
- */
-void
-ungetnewvnode(vnode_t *vp)
-{
-
- KASSERT(vp->v_usecount == 1);
- KASSERT(vp->v_data == NULL);
- KASSERT(vp->v_freelisthd == NULL);
-
- mutex_enter(vp->v_interlock);
- vp->v_iflag |= VI_CLEAN;
- vrelel(vp, 0);
-}
-
-/*
* Helper thread to keep the number of vnodes below desiredvnodes.
*/
static void
Index: src/sys/sys/param.h
diff -u src/sys/sys/param.h:1.481 src/sys/sys/param.h:1.482
--- src/sys/sys/param.h:1.481 Sat Jun 20 14:44:56 2015
+++ src/sys/sys/param.h Sun Jul 12 08:11:28 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: param.h,v 1.481 2015/06/20 14:44:56 martin Exp $ */
+/* $NetBSD: param.h,v 1.482 2015/07/12 08:11:28 hannken Exp $ */
/*-
* Copyright (c) 1982, 1986, 1989, 1993
@@ -63,7 +63,7 @@
* 2.99.9 (299000900)
*/
-#define __NetBSD_Version__ 799001900 /* NetBSD 7.99.19 */
+#define __NetBSD_Version__ 799002000 /* NetBSD 7.99.20 */
#define __NetBSD_Prereq__(M,m,p) (((((M) * 100000000) + \
(m) * 1000000) + (p) * 100) <= __NetBSD_Version__)
Index: src/sys/sys/vnode.h
diff -u src/sys/sys/vnode.h:1.255 src/sys/sys/vnode.h:1.256
--- src/sys/sys/vnode.h:1.255 Wed May 6 15:57:08 2015
+++ src/sys/sys/vnode.h Sun Jul 12 08:11:28 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: vnode.h,v 1.255 2015/05/06 15:57:08 hannken Exp $ */
+/* $NetBSD: vnode.h,v 1.256 2015/07/12 08:11:28 hannken Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -522,9 +522,6 @@ struct vnode;
void vfs_vnode_sysinit(void);
int bdevvp(dev_t, struct vnode **);
int cdevvp(dev_t, struct vnode **);
-int getnewvnode(enum vtagtype, struct mount *, int (**)(void *),
- kmutex_t *, struct vnode **);
-void ungetnewvnode(struct vnode *);
int vaccess(enum vtype, mode_t, uid_t, gid_t, mode_t, kauth_cred_t);
void vattr_null(struct vattr *);
void vdevgone(int, int, int, enum vtype);