summaryrefslogtreecommitdiff
path: root/static/netbsd/man9/vfssubr.9
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man9/vfssubr.9')
-rw-r--r--static/netbsd/man9/vfssubr.9254
1 files changed, 254 insertions, 0 deletions
diff --git a/static/netbsd/man9/vfssubr.9 b/static/netbsd/man9/vfssubr.9
new file mode 100644
index 00000000..1026e07a
--- /dev/null
+++ b/static/netbsd/man9/vfssubr.9
@@ -0,0 +1,254 @@
+.\" $NetBSD: vfssubr.9,v 1.28 2017/07/03 21:28:48 wiz Exp $
+.\"
+.\" Copyright (c) 2003, 2005, 2006 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Gregory McGarry.
+.\"
+.\" 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 NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+.\" ``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 FOUNDATION OR CONTRIBUTORS
+.\" 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.
+.\"
+.Dd April 17, 2017
+.Dt VFSSUBR 9
+.Os
+.Sh NAME
+.Nm vfssubr ,
+.Nm vfs_getnewfsid ,
+.Nm vfs_getvfs ,
+.Nm vfs_export ,
+.Nm vfs_showexport ,
+.Nm vfs_export_lookup ,
+.Nm vfs_setpublicfs ,
+.Nm vfs_mountedon ,
+.Nm vfs_mountroot ,
+.Nm vfs_unmountall ,
+.Nm vfs_busy ,
+.Nm vfs_unbusy ,
+.Nm vfs_mountalloc ,
+.Nm vfs_rootmountalloc ,
+.Nm vfs_shutdown ,
+.Nm vfs_attach ,
+.Nm vfs_detach ,
+.Nm vfs_reinit ,
+.Nm vfs_getopsbyname ,
+.Nm vfs_suspend ,
+.Nm vfs_resume ,
+.Nm vfs_vnode_iterator_init ,
+.Nm vfs_vnode_iterator_destroy ,
+.Nm vfs_vnode_iterator_next
+.Nd high-level interface to kernel file system interface
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.In sys/vnode.h
+.Ft void
+.Fn vfs_getnewfsid "struct mount *mp"
+.Ft struct mount *
+.Fn vfs_getvfs "fsid_t *fsid"
+.Ft int
+.Fn vfs_export_lookup "struct mount *mp" "struct netexport *nep" \
+"struct export_args *argp"
+.Ft int
+.Fn vfs_setpublicfs "struct mount *mp" "struct netexport *nep" \
+"struct export_args *argp"
+.Ft int
+.Fn vfs_mountedon "struct vnode *vp"
+.Ft int
+.Fn vfs_mountroot "void"
+.Ft void
+.Fn vfs_unmountall "struct lwp *l"
+.Ft int
+.Fn vfs_busy "struct mount *mp"
+.Ft void
+.Fn vfs_unbusy "struct mount *mp"
+.Ft struct mount *
+.Fn vfs_mountalloc "struct vfsops *vfs" "struct vnode *vp"
+.Ft int
+.Fn vfs_rootmountalloc "char *fstypename" "char *devname" \
+"struct mount **mpp"
+.Ft void
+.Fn vfs_shutdown "void"
+.Ft int
+.Fn vfs_attach "struct vfsops *vfs"
+.Ft int
+.Fn vfs_detach "struct vfsops *vfs"
+.Ft void
+.Fn vfs_reinit "void"
+.Ft struct vfsops *
+.Fn vfs_getopsbyname "const char *name"
+.Ft int
+.Fn vfs_suspend "struct mount *mp" "int nowait"
+.Ft void
+.Fn vfs_resume "struct mount *mp"
+.Ft void
+.Fn vfs_vnode_iterator_init "struct mount *mp" "struct vnode_iterator **vip"
+.Ft void
+.Fn vfs_vnode_iterator_destroy "struct vnode_iterator *vi"
+.Ft struct vnode *
+.Fn vfs_vnode_iterator_next "struct vnode_iterator *vi" "bool (*selector)(void *context, struct vnode *vpp)" "void *context"
+.Sh DESCRIPTION
+The high-level functions described in this page are the interface to
+the kernel file system interface (VFS).
+.Sh FUNCTIONS
+.Bl -tag -width compact
+.It Fn vfs_getnewfsid "mp"
+Get a new unique file system id type for the file system specified by
+the mount structure
+.Fa mp .
+The file system id type is stored in
+.Em mp->mnt_stat.f_fsidx .
+.It Fn vfs_getvfs "fsid"
+Lookup a mount point with the file system identifier
+.Fa fsid .
+.It Fn vfs_export_lookup "mp" "nep" "argp"
+Check client permission on the exportable file system specified by the
+mount structure
+.Fa mp .
+The argument
+.Fa nam
+is the address of the networked client.
+This function is used by file system type specific functions to verify
+that the client can access the file system.
+.It Fn vfs_setpublicfs "mp" "nep" "argp"
+Set the publicly exported file system specified by the mount structure
+.Fa mp .
+.It Fn vfs_mountedon "vp"
+Check to see if a file system is mounted on a block device specified
+by the vnode
+.Fa vp .
+.It Fn vfs_mountroot "void"
+Mount the root file system.
+.It Fn vfs_unmountall "l"
+Unmount all file systems.
+.It Fn vfs_busy "mp"
+Mark the mount point specified by
+.Fa mp
+as busy and get a reference to it.
+This function is used to synchronize access and to delay unmounting.
+The caller must hold a pre-existing reference to the mount.
+.It Fn vfs_unbusy "mp"
+Undo a
+.Fn vfs_busy
+on the mount point specified by
+.Fa mp .
+.It Fn vfs_mountalloc "vfsops" "vp"
+Allocate and initialise a mount structure, setting
+.Em mnt_vnodecovered
+to
+.Fa vp
+and
+.Em mnt_op
+to
+.Fa vfsops .
+On success return the address of the mount structure.
+Otherwise, return
+.Dv NULL .
+.It Fn vfs_rootmountalloc "fstypename" "devname" "mpp"
+Lookup a file system type specified by the name
+.Fa fstypename
+and if found allocate and initialise a mount structure for it.
+The allocated mount structure is marked as busy and returned in the
+address specified by
+.Fa mpp .
+The device the root file system was mounted from is specified by the
+argument
+.Fa devname
+and is recorded in the new mount structure.
+.It Fn vfs_shutdown
+Sync and unmount all file systems before shutting down.
+Invoked by
+.Xr cpu_reboot 9 .
+.It Fn vfs_attach "vfs"
+Establish file system
+.Fa vfs
+and initialise it.
+.It Fn vfs_detach "vfs"
+Remove file system
+.Fa vfs
+from the kernel.
+.It Fn vfs_reinit "void"
+Reinitialises all file systems within the kernel through file
+system-specific vfs operation (see
+.Xr vfsops 9 ) .
+.It Fn vfs_getopsbyname "name"
+Given a file system name specified by
+.Fa name ,
+look up the vfs operations for that file system (see
+.Xr vfsops 9 ) ,
+or return
+.Dv NULL
+if file system isn't present in the kernel.
+.It Fn vfs_suspend "mp" "nowait"
+Request a mounted file system to suspend all operations.
+All new operations to the file system are stopped.
+After all operations in progress have completed, the
+file system is synced to disk and the function returns.
+If a file system suspension is currently in progress and
+.Fa nowait
+is set
+.Er EWOULDBLOCK
+is returned.
+If the operation is successful, zero is returned, otherwise an
+appropriate error code is returned.
+.It Fn vfs_resume "mp"
+Request a mounted file system to resume operations.
+.It Fn vfs_vnode_iterator_init "mp" "vip"
+Allocate and initialize an iterator
+.Fa vip
+over all vnodes attached to mount point
+.Fa mp .
+.It Fn vfs_vnode_iterator_destroy "vi"
+Free all resources associated with an iterator
+.Fa vi .
+.It Fn vfs_vnode_iterator_next "vi" "selector" "context"
+Return the next vnode from iterator
+.Fa vi .
+If the operation is successful the vnode has a reference added to it
+and it is returned.
+If the iterator is exhausted the function returns
+.Dv NULL .
+If an optional
+.Fa selector
+function is provided, then this function is called with the
+.Fa context
+provided and the candidate vnode to be returned.
+If the
+.Fa selector
+returns
+.Dv false ,
+then the vnode is skipped; if it returns
+.Dv true ,
+the vnode is referenced and then returned.
+.El
+.Sh CODE REFERENCES
+The vfs interface functions are implemented within the files
+.Pa sys/kern/vfs_mount.c ,
+.Pa sys/kern/vfs_subr.c
+and
+.Pa sys/kern/vfs_init.c .
+.Sh SEE ALSO
+.Xr intro 9 ,
+.Xr namei 9 ,
+.Xr vfs 9 ,
+.Xr vfsops 9 ,
+.Xr vnode 9 ,
+.Xr vnodeops 9