aboutsummaryrefslogtreecommitdiff
path: root/share/man/man4/tmpfs.4
diff options
context:
space:
mode:
Diffstat (limited to 'share/man/man4/tmpfs.4')
-rw-r--r--share/man/man4/tmpfs.4229
1 files changed, 229 insertions, 0 deletions
diff --git a/share/man/man4/tmpfs.4 b/share/man/man4/tmpfs.4
new file mode 100644
index 000000000000..7d24f7db9aea
--- /dev/null
+++ b/share/man/man4/tmpfs.4
@@ -0,0 +1,229 @@
+.\"-
+.\" Copyright (c) 2007 Xin LI
+.\" Copyright (c) 2017 The FreeBSD Foundation
+.\"
+.\" Part of this documentation was written by
+.\" Konstantin Belousov <kib@FreeBSD.org> under sponsorship
+.\" from the FreeBSD Foundation.
+.\"
+.\" 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 DOCUMENTATION IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+.\"
+.\"-
+.\" Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+.\" 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, 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 September 18, 2023
+.Dt TMPFS 4
+.Os
+.Sh NAME
+.Nm tmpfs
+.Nd "in-memory file system"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options TMPFS"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+tmpfs_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver implements an in-memory, or
+.Nm
+file system.
+The filesystem stores both file metadata and data in main memory.
+This allows very fast and low latency accesses to the data.
+The data is volatile.
+An umount or system reboot invalidates it.
+These properties make the filesystem's mounts suitable for fast
+scratch storage, like
+.Pa /tmp .
+.Pp
+If the system becomes low on memory and swap is configured
+.Po see
+.Xr swapon 8 Pc ,
+the system can transfer file data to swap space, freeing memory
+for other needs.
+Metadata, including the directory content, is never swapped out by the
+current implementation.
+Keep this in mind when planning the mount limits, especially when expecting
+to place many small files on a tmpfs mount.
+.Pp
+When
+.Xr mmap 2
+is used on a file from a tmpfs mount, the swap VM object managing the
+file pages is used to implement mapping and avoid double-copying of
+the file data.
+This quirk causes process inspection tools, like
+.Xr procstat 1 ,
+to report anonymous memory mappings instead of file mappings.
+.Sh OPTIONS
+The following options are available when
+mounting
+.Nm
+file systems:
+.Bl -tag -width "maxfilesize"
+.It Cm easize
+Set the maximum memory size used by extended attributes in bytes.
+The default is 16 megabytes.
+.It Cm export
+Accept the
+.Cm export
+option for compatibility with
+.Xr nfsv4 4 .
+This option does nothing.
+.It Cm gid
+Set the group ID of the root inode of the file system.
+The default is the mount point's GID.
+.It Cm inodes
+Set the maximum number of nodes available to the file system.
+If not specified, the file system chooses a reasonable maximum based on
+the file system size, which can be limited with the
+.Cm size
+option.
+.It Cm maxfilesize
+Set the maximum file size in bytes.
+The default is the maximum possible value.
+.It Cm mode
+Set the mode (in octal notation) of the root inode of the file system.
+The default is the mount point's mode.
+.It Cm nomtime
+Disable the tracking of mtime updates caused by writes to the
+shared mapped areas backed by
+.Nm
+files.
+This option removes periodic scans,
+which downgrade read-write-mapped pages to read-only to note the writes.
+.It Cm nonc
+Do not use namecache to resolve names to files for the created mount.
+This saves memory, but currently might impair scalability for highly
+used mounts on large machines.
+.It Cm nosymfollow
+Do not follow
+.Xr symlink 7 Ap s
+on the mounted file system.
+.It Cm pgread
+Enable pgcache read for the mount.
+.It Cm size
+Set the total file system size in bytes, unless suffixed
+with one of k, m, g, t, or p, which denote byte, kilobyte,
+megabyte, gigabyte, terabyte and petabyte respectively.
+If zero (the default) or a value larger than SIZE_MAX - PAGE_SIZE
+is given, the available amount of memory (including
+main memory and swap space) will be used.
+.It Cm uid
+Set the user ID of the root inode of the file system.
+The default is the mount point's UID.
+.It Cm union
+Refer to
+.Xr mount 8 .
+.El
+.Sh SYSCTL VARIABLES
+The following
+.Xr sysctl 8
+variables are available:
+.Bl -tag -width indent
+.It Va vfs.tmpfs.memory_percent
+The percentage of memory plus swap space available at kernel file system
+initialization that can be used by a file system with a size of 0.
+When this amount of space in use is reached, new files cannot be created
+and files cannot be extended.
+The default is 95%.
+Changing this value also changes
+.Va vfs.tmpfs.memory_reserved .
+.It Va vfs.tmpfs.memory_reserved
+The currently-reserved amount of memory plus swap space
+based on the memory percentage.
+The minimum is compiled into the system, and defaults to 4 MB.
+.El
+.Sh EXAMPLES
+Mount a
+.Nm
+memory file system:
+.Pp
+.Dl "mount -t tmpfs tmpfs /tmp"
+.Pp
+Configure a
+.Nm
+mount via
+.Xr fstab 5 :
+.Bd -literal -offset indent
+tmpfs /tmp tmpfs rw 0 0
+.Ed
+.Sh SEE ALSO
+.Xr procstat 1 ,
+.Xr mmap 2 ,
+.Xr nmount 2 ,
+.Xr unmount 2 ,
+.Xr fstab 5 ,
+.Xr mdmfs 8 ,
+.Xr mount 8 ,
+.Xr swapinfo 8 ,
+.Xr swapon 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+kernel implementation was written by
+.An Julio M. Merino Vidal Aq Mt jmmv@NetBSD.org
+as a Google Summer of Code project.
+.Pp
+.An Rohit Jalan
+and others ported it from
+.Nx
+to
+.Fx .
+.Pp
+This manual page was written by
+.An Xin LI Aq Mt delphij@FreeBSD.org .