Document kernel API for vfs_busy(), vfs_mount(), vfs_unbusy(), and
vinvalbuf(). Submitted by: Chad David <davidc@acns.ab.ca>
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
.\"
|
||||
.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. All rights reserved.
|
||||
.\"
|
||||
.\" 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(s), this list of conditions and the following disclaimer as
|
||||
.\" the first lines of this file unmodified other than the possible
|
||||
.\" addition of one or more copyright notices.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice(s), 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 COPYRIGHT HOLDER(S) ``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 COPYRIGHT HOLDER(S) 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 8, 2001
|
||||
.Dt VFS_BUSY 9
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm vfs_busy
|
||||
.Nd "Marks a mount point as busy."
|
||||
.Sh SYNOPSIS
|
||||
.Ft int
|
||||
.Fo vfs_busy
|
||||
.Fa "struct mount *mp"
|
||||
.Fa "int flags"
|
||||
.Fa "struct mtx *interlkp"
|
||||
.Fa "struct proc *p"
|
||||
.Fc
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
function marks a mount point as busy. The purpose of this
|
||||
function is to synchronize access to a mount point. It also
|
||||
delays unmounting by sleeping on mp if the MNTK_UNMOUNT flag
|
||||
is set in mp->mnt_kern_flag and the LK_NOWAIT flag is NOT set.
|
||||
.Pp
|
||||
Its arguments are:
|
||||
.Bl -tag -width interlkp
|
||||
.It Ar mp
|
||||
The mount point to busy.
|
||||
.It Ar flags
|
||||
Flags controlling the operation of
|
||||
.Nm
|
||||
.
|
||||
.Pp
|
||||
LK_NOWAIT - do not sleep if MNTK_UNMOUNT is set.
|
||||
.It Ar interlkp
|
||||
The interlock mutex for mp->mount_lock. If there is any chance
|
||||
the mount point is being unmounted and LK_NOWAIT is not set then
|
||||
interlock must be valid locked mutex.
|
||||
.It Ar p
|
||||
The process responsible for this call.
|
||||
.El
|
||||
.Sh LOCKS
|
||||
If interlkp is a valid pointer it must be locked on entry,
|
||||
and it will not be unlocked even on error.
|
||||
.Sh RETURN VALUES
|
||||
A 0 value is returned on success. If the mount point is being
|
||||
unmounted ENOENT will always be returned.
|
||||
.Sh ERRORS
|
||||
.Bl -tag
|
||||
.It Bq ENOENT
|
||||
The mount point is being unmounted (MNTK_UNMOUNT is set).
|
||||
.El
|
||||
.Sh AUTHORS
|
||||
This man page was written by Chad David.
|
||||
@@ -0,0 +1,116 @@
|
||||
.\"
|
||||
.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. All rights reserved.
|
||||
.\"
|
||||
.\" 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(s), this list of conditions and the following disclaimer as
|
||||
.\" the first lines of this file unmodified other than the possible
|
||||
.\" addition of one or more copyright notices.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice(s), 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 COPYRIGHT HOLDER(S) ``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 COPYRIGHT HOLDER(S) 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 8, 2001
|
||||
.Dt VFS_MOUNT 9
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm vfs_mount
|
||||
.Nd "Generic filesystem mount function"
|
||||
.Sh SYNOPSIS
|
||||
.Fd #include <sys/mount.h>
|
||||
.Ft int
|
||||
.Fo vfs_mount
|
||||
.Fa "struct proc *vp"
|
||||
.Fa "char *fstype"
|
||||
.Fa "char *fspath"
|
||||
.Fa "int fsflags"
|
||||
.Fa "void *fsdata"
|
||||
.Fc
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
function handles the generic portion of mounting a filesystem,
|
||||
and calls the filesystem specific mount function after verifying
|
||||
its parameters and setting up the structures expected by the
|
||||
underlying mount code.
|
||||
.Pp
|
||||
.Nm
|
||||
is called directly by the mount system call.
|
||||
.Pp
|
||||
Its arguments are:
|
||||
.Bl -tag -width fsflags
|
||||
.It Ar p
|
||||
The process responsible for this call.
|
||||
.It Ar fstype
|
||||
The type of filesystem being mounted.
|
||||
.It Ar fspath
|
||||
The path to the mount point of the filesystem.
|
||||
.It Ar fsflags
|
||||
Flags controlling the mount. See mount(8) for details.
|
||||
.Pp
|
||||
MNT_EXPORTED MNT_NOSUID MNT_NODEV MNT_UPDATE MNT_RELOAD
|
||||
MNT_FORCE MNT_ASYNC MNT_SYNCHRONOUS MNT_UNION MNT_NOATIME
|
||||
MNT_SNAPSHOT MNT_NOCLUSTERR MNT_NOCLUSTERW MNT_IGNORE
|
||||
MNT_UNION MNT_NOSYMFOLLOW
|
||||
.It Ar fsdata
|
||||
Filesystem specific data structure. It is in userspace
|
||||
when passed to
|
||||
.Nm
|
||||
and is left untouched when passed to filesystems mount().
|
||||
.El
|
||||
.Sh RETURN VALUES
|
||||
A 0 value is returned on success.
|
||||
.Sh ERRORS
|
||||
.Bl -tag -width Er
|
||||
.It Bq Er ENAMETOOLONG
|
||||
The fs type or the mount point path is too long or any individual
|
||||
path component is too long.
|
||||
.It Bq Er EPERM
|
||||
Permission denied. There are a number of reason this can occur
|
||||
ranging from the user not having permission to mount a filesystem
|
||||
to the securelevel being to high to load the fstype module.
|
||||
.It Bq Er EINVAL
|
||||
Invalid operation (ex: trying to update a non mount-point).
|
||||
.It Bq Er ENOENT
|
||||
The mount point does not exist (from namei)
|
||||
.It Bq Er ELOOP
|
||||
The mount point is a muddle of links (from namei)
|
||||
.It Bq Er EOPNOTSUPP
|
||||
The operation is not supported (ex: reloading a r/w filesystem)
|
||||
.It Bq Er EBUSY
|
||||
The mount point is busy or is not really a mount point (on update)
|
||||
.It Bq Er ENOTDIR
|
||||
The mount point is not a directory
|
||||
.It Bq Er ENODEV
|
||||
The kernel linker was unable to load the specified fstype or
|
||||
was unable to find the specified fstype module.
|
||||
.Pp
|
||||
Other errors can be returned by the filesystems mount() and
|
||||
you should check the specific filesystem for details. Also
|
||||
this call relies on a large number of other kernel services
|
||||
whose errors it returns so this list my not be exhaustive.
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr mount 2
|
||||
.Xr mount 8
|
||||
.Xr mount 9
|
||||
.Xr ffs_mount 9
|
||||
vfs.usermount
|
||||
.Sh AUTHORS
|
||||
This man page was written by Chad David.
|
||||
@@ -0,0 +1,64 @@
|
||||
.\"
|
||||
.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. All rights reserved.
|
||||
.\"
|
||||
.\" 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(s), this list of conditions and the following disclaimer as
|
||||
.\" the first lines of this file unmodified other than the possible
|
||||
.\" addition of one or more copyright notices.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice(s), 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 COPYRIGHT HOLDER(S) ``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 COPYRIGHT HOLDER(S) 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 8, 2001
|
||||
.Dt VFS_UNBUSY 9
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm vfs_unbusy
|
||||
.Nd "Unbusy a mount point.
|
||||
.Sh SYNOPSIS
|
||||
.Ft void
|
||||
.Fo vfs_unbusy
|
||||
.Fa "struct mount *mp"
|
||||
.Fa "struct proc *p"
|
||||
.Fc
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
function unbusys (unlocks) a mount point by unlocking
|
||||
mp->mnt_lock. The lock is typically aquired by calling
|
||||
vfs_busy() prior to this call.
|
||||
.Pp
|
||||
Its arguments are:
|
||||
.Bl -tag -width uap
|
||||
.It Ar mp
|
||||
The mount point to unbusy (unlock).
|
||||
.It Ar p
|
||||
The process responsible for this call.
|
||||
.El
|
||||
.Sh LOCKS
|
||||
.Ar mnt_lock
|
||||
must be locked in
|
||||
.Ar mp
|
||||
prior to calling
|
||||
this function, and it will be unlocked upon return.
|
||||
.Sh SEE ALSO
|
||||
.Xr vfs_busy 9
|
||||
.Sh AUTHORS
|
||||
This man page was written by Chad David.
|
||||
@@ -0,0 +1,104 @@
|
||||
.\"
|
||||
.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. All rights reserved.
|
||||
.\"
|
||||
.\" 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(s), this list of conditions and the following disclaimer as
|
||||
.\" the first lines of this file unmodified other than the possible
|
||||
.\" addition of one or more copyright notices.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice(s), 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 COPYRIGHT HOLDER(S) ``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 COPYRIGHT HOLDER(S) 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 7, 2001
|
||||
.Dt VINVALBUF 9
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm vinvalbuf
|
||||
.Nd "Flushes and invalidates all buffers associated with a vnode"
|
||||
.Sh SYNOPSIS
|
||||
.Fd #include <sys/vnode.h>
|
||||
.Ft int
|
||||
.Fo vinvalbuf
|
||||
.Fa "struct vnode *vp"
|
||||
.Fa "int flags"
|
||||
.Fa "struct ucred *cred"
|
||||
.Fa "struct proc *p"
|
||||
.Fa "int slpflag"
|
||||
.Fa "int slptimeo"
|
||||
.Fc
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
function invalidates all of the buffers associated with the given vnode.
|
||||
This includes buffers on the clean list and the dirty list. If the V_SAVE
|
||||
flag is specified then the buffers on the dirty list are synced prior to being
|
||||
released. If there is a VM Object associated with the vnode it is removed.
|
||||
.Pp
|
||||
Its arguments are:
|
||||
.Bl -tag -width spltimeo
|
||||
.It Ar vp
|
||||
A pointer to the vnode whose buffers will be invalidated.
|
||||
.It Ar flags
|
||||
The only supported flag is V_SAVE and it indicates that dirty buffers should by synced.
|
||||
.It Ar cred
|
||||
The user credentials that are used to
|
||||
.Fn VOP_FSYNC ""
|
||||
buffers if V_SAVE is set.
|
||||
.It Ar p
|
||||
The process responsible for this call.
|
||||
.It Ar slpflag
|
||||
The slp flag that will be used in the priority of any sleeps in the function.
|
||||
.It Ar slptimeo
|
||||
The timeout for any sleeps in the function.
|
||||
.El
|
||||
.Sh LOCKS
|
||||
The vnode is assumed to be locked prior to the call and remains locked upon return.
|
||||
.Pp
|
||||
Giant must be held by prior to the call and remains locked upon return.
|
||||
.Sh RETURN VALUES
|
||||
A 0 value is returned on success.
|
||||
.Sh PSEUDOCODE
|
||||
.Bd -literal
|
||||
vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p);
|
||||
error = vinvalbuf(devvp, V_SAVE, cred, p, 0, 0);
|
||||
VOP_UNLOCK(devvp, 0, p);
|
||||
if (error)
|
||||
return (error);
|
||||
.Ed
|
||||
.Sh ERRORS
|
||||
.Bl -tag -width Er
|
||||
.It Bq Er ENOSPC
|
||||
The filesystem is full. (With V_SAVE)
|
||||
.It Bq Er EDQUOT
|
||||
Disc quota exceeded. (With V_SAVE)
|
||||
.It Bq Er EWOULDBLOCK
|
||||
Sleep operation timed out (See slptimeo)
|
||||
.It Bq Er ERESTART
|
||||
A signal needs to be delivered and the system call should be restarted (With PCATCH set in slpflag)
|
||||
.It Bq Er EINTR
|
||||
The system has been interrupted by a signal (With PCATCH set in slpflag)
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr brelse 9
|
||||
.Xr bremfree 9
|
||||
.Xr VOP_FSYNC 9
|
||||
.Xr tsleep 9
|
||||
.Sh AUTHORS
|
||||
This man page was written by Chad David.
|
||||
Reference in New Issue
Block a user