209 lines
6.7 KiB
Groff
209 lines
6.7 KiB
Groff
|
.\" $NetBSD: vfssubr.9,v 1.1 2003/04/06 07:09:48 gmcgarry Exp $
|
||
|
.\"
|
||
|
.\" Copyright (c) 2003 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.
|
||
|
.\" 3. All advertising materials mentioning features or use of this software
|
||
|
.\" must display the following acknowledgement:
|
||
|
.\" This product includes software developed by the NetBSD
|
||
|
.\" Foundation, Inc. and its contributors.
|
||
|
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
|
||
|
.\" contributors may be used to endorse or promote products derived
|
||
|
.\" from this software without specific prior written permission.
|
||
|
.\"
|
||
|
.\" 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 6, 2003
|
||
|
.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_rootmountalloc ,
|
||
|
.Nm vfs_shutdown ,
|
||
|
.Nm vfs_attach ,
|
||
|
.Nm vfs_detach ,
|
||
|
.Nm vfs_reinit ,
|
||
|
.Nm vfs_getopsbyname ,
|
||
|
.Nm vfs_sysctl
|
||
|
.Nd high-level interface to kernel file system interface
|
||
|
.Sh SYNOPSIS
|
||
|
.Fd #include \*[Lt]sys/param.h\*[Gt]
|
||
|
.Fd #include \*[Lt]sys/mount.h\*[Gt]
|
||
|
.Fd #include \*[Lt]sys/vnode.h\*[Gt]
|
||
|
.Ft void
|
||
|
.Fn vfs_getnewfsid "struct mount *mp"
|
||
|
.Ft struct mount *
|
||
|
.Fn vfs_getvfs "fsid_t *fsid"
|
||
|
.Ft int
|
||
|
.Fn vfs_export "struct mount *mp" "struct netexport *nep" \
|
||
|
"struct export_args *argp"
|
||
|
.Ft void
|
||
|
.Fn vfs_showexport "struct mount *mp" "struct export_args *argp" \
|
||
|
"struct netexport *nep"
|
||
|
.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 proc *p"
|
||
|
.Ft int
|
||
|
.Fn vfs_busy "struct mount *mp" "int flags" "struct simplelock *interlkp"
|
||
|
.Ft void
|
||
|
.Fn vfs_unbusy "struct mount *mp"
|
||
|
.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_sysctl "int *name" "u_int namelen" "void *oldp" "size_t *oldlenp" \
|
||
|
"void *newp" "size_t newlen" "struct proc *p"
|
||
|
.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-\*[Gt]mnt_stat.f_fsid .
|
||
|
.It Fn vfs_getvfs "fsid"
|
||
|
Lookup a mount point with the file system identifier
|
||
|
.Fa fsid .
|
||
|
.It Fn vfs_export "mp" "nep" "argp"
|
||
|
Undocumented.
|
||
|
.It Fn vfs_showexport "mp" "argp" "nep"
|
||
|
Undocumented.
|
||
|
.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 "p"
|
||
|
Unmount all file systems.
|
||
|
.It Fn vfs_busy "mp" "flags" "interlkp"
|
||
|
Mark the mount point specified by
|
||
|
.Fa mp
|
||
|
as busy. This function is used to synchronize access and to delay
|
||
|
unmounting. The interlock specified by argument
|
||
|
.Fa interlkp
|
||
|
is not released on failure.
|
||
|
.It Fn vfs_unbusy "mp"
|
||
|
Free the busy file system specified by the mount structure
|
||
|
.Fa mp .
|
||
|
.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 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.
|
||
|
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 NULL if file system isn't present in the kernel.
|
||
|
.It Fn vfs_sysctl "name" "namelen" "oldp" "oldlenp" "newp" "newlen" \
|
||
|
"struct proc *p"
|
||
|
Retrieve file system-specific information for the sysctl(3) function.
|
||
|
.El
|
||
|
.Sh CODE REFERENCES
|
||
|
This section describes places within the
|
||
|
.Nx
|
||
|
source tree where actual code implementing or using the vfs
|
||
|
operations can be found.
|
||
|
All pathnames are relative to
|
||
|
.Pa /usr/src .
|
||
|
.Pp
|
||
|
The vfs interface functions are implemented within the files
|
||
|
.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
|