my previous version was wrong; this one is right
[unix-history] / usr / src / lib / libc / sys / mount.2
index e61271d..a2abae8 100644 (file)
-.\" Copyright (c) 1980 Regents of the University of California.
-.\" All rights reserved.  The Berkeley software License Agreement
-.\" specifies the terms and conditions for redistribution.
+.\" Copyright (c) 1980, 1989 The Regents of the University of California.
+.\" All rights reserved.
 .\"
 .\"
-.\"    @(#)mount.2     4.1 (Berkeley) %G%
+.\" %sccs.include.redist.man%
 .\"
 .\"
-.TH MOUNT 2 
-.UC 4
-.SH NAME
-mount, umount \- mount or remove file system
-.SH SYNOPSIS
-.nf
-.B mount(special, name, rwflag)
-.B char *special, *name;
-.PP
-.B umount(special)
-.B char *special;
-.fi
-.SH DESCRIPTION
-.I Mount
-announces to the system that a removable file system has
-been mounted on
-the block-structured special file
-.I special;
-from now on, references to file
-.I name
-will refer to
-the root file on the newly mounted file system.
-.I Special
-and
-.I name
-are pointers to null-terminated strings
-containing the appropriate path names.
-.PP
-.I Name
-must exist already. 
-.I Name
-must be a directory (unless the root of the mounted file system
-is not a directory).
-Its old contents
-are inaccessible while the file system
-is mounted.
-.PP
+.\"     @(#)mount.2    6.12 (Berkeley) %G%
+.\"
+.Dd 
+.Dt MOUNT 2
+.Os BSD 4
+.Sh NAME
+.Nm mount ,
+.Nm unmount
+.Nd mount or dismount a filesystem
+.Sh SYNOPSIS
+.Fd #include <sys/mount.h>
+.Ft int
+.Fn mount "int type" "const char *dir" "int flags" "caddr_t data"
+.Ft int
+.Fn unmount "const char *dir" "int flags"
+.Sh DESCRIPTION
+The
+.Fn mount
+function grafts
+a filesystem object onto the system file tree
+at the point
+.Ar dir .
+The argument
+.Ar data
+describes the filesystem object to be mounted.
+The argument
+.Ar type
+tells the kernel how to interpret
+.Ar data
+(See
+.Ar type
+below).
+The contents of the filesystem
+become available through the new mount point
+.Ar dir .
+Any files in
+.Ar dir
+at the time
+of a successful mount are swept under the carpet so to speak, and
+are unavailable until the filesystem is unmounted.
+.Pp
+The following
+.Ar flags
+may be specified to
+suppress default semantics which affect filesystem access.
+.Bl -tag -width M_SYNCHRONOUS
+.It Dv M_RDONLY
+The file system should be treated as read-only;
+Even the super-user may not write on it.
+.It Dv M_NOEXEC
+Do not allow files to be executed from the file system.
+.It Dv M_NOSUID
+Do not honor setuid or setgid bits on files when executing them.
+.It Dv M_NODEV
+Do not interpret special files on the file system.
+.It Dv M_SYNCHRONOUS
+All I/O to the file system should be done synchronously.
+.El
+.Pp
+The flag
+.Dv M_UPDATE
+indicates that the mount command is being applied 
+to an already mounted file system.
+This allows the mount flags to be changed without requiring
+that the file system be unmounted and remounted.
+Some file systems may not allow all flags to be changed.
+For example,
+most file systems will not allow a change from read-write to read-only.
+.Pp
+The
+.Fa type
+argument defines the type of the file system.
+The types of file systems known to the system are defined in
+.Aq Pa sys/mount.h .
+.Fa Data
+is a pointer to a structure that contains the type
+specific arguments to mount.
+The currently supported types of file systems and
+their type specific data are:
+.Pp
+.Dv MOUNT_UFS
+.Bd -literal -offset indent -compact
+struct ufs_args {
+      char     *fspec;  /* Block special file to mount */
+      int      exflags; /* export related flags */
+      uid_t    exroot;  /* mapping for root uid */
+};
+.Ed
+.Pp
+.Dv MOUNT_NFS
+.Bd -literal -offset indent -compact
+struct nfs_args {
+      struct sockaddr_in *addr; /* file server address */
+      nfsv2fh_t *fh;       /* File handle to be mounted */
+      int       flags;     /* flags */
+      int       wsize;     /* write size in bytes */
+      int       rsize;     /* read size in bytes */
+      int       timeo;     /* initial timeout 0.1 secs */
+      int       retrans;   /* times to retry send */
+      char      *hostname; /* server's name */
+};
+.Ed
+.Pp
+.Dv MOUNT_MFS
+.Bd -literal -offset indent -compact
+struct mfs_args {
+      char     *name;  /* name of backing process */
+      caddr_t  base;   /* base address of the file system */
+      u_long   size;   /* size of the file system */
+};
+.Ed
+.Pp
 The
 The
-.I rwflag
-argument determines whether
-the file system can be written on; if it is 0 writing
-is allowed, if non-zero no writing is done.
-Physically write-protected and magnetic
-tape file systems must be mounted read-only or
-errors will occur when access times are updated,
-whether or not any
-explicit write is attempted.
-.PP
-.I Umount
-announces to the system that the
-.I special
-file is no longer to contain a removable file system.
-The associated file reverts to its ordinary interpretation.
-.SH "SEE ALSO"
-mount(8)
-.SH DIAGNOSTICS
-.I Mount
-returns 0 if the action occurred; \-1 if
-.I special
-is inaccessible or not an appropriate file; if
-.I name
-does not exist; if
-.I special
-is already mounted; if
-.I name
-is in use; or if
-there are already too many
-file systems mounted.
-.PP
-.I Umount
-returns 0 if the action occurred; \-1 if
-if the special file is inaccessible or
-does not have a mounted file system,
-or if there are active files in the mounted 
-file system.
-.SH BUGS
-If a file containing holes
-(unallocated blocks)
-is read, even on a file system mounted read-only,
-the system will attempt to fill in the holes
-by writing on the device.
-.SH "ASSEMBLER (PDP-11)"
-(mount = 21.)
-.br
-.B sys  mount; special; name; rwflag
-.PP
-(umount = 22.)
-.br
-.B sys  umount; special
+.Fn umount
+function call disassociates the filesystem from the specified
+mount point
+.Fa dir .
+.Pp
+The
+.Fa flags
+argument may have one of the following values:
+.Bl -tag -width  M_SYNCHRONOUS
+.It Dv MNT_NOFORCE
+The unmount should fail if any files are active on the file system.
+.It Dv MNT_FORCE
+The file system should be forcibly unmounted even if files are
+still active.
+Active special devices continue to work,
+but any further accesses to any other active files result in errors
+even if the file system is later remounted.
+.El
+.Sh RETURN VALUES
+The
+.Fn mount
+returns the value 0 if the mount was successful, otherwise -1 is returned
+and the variable
+.Va errno
+is set to indicate the error.
+.Pp
+.Nm Umount
+returns the value 0 if the umount succeeded; otherwise -1 is returned
+and the variable
+.Va errno
+is set to indicate the error.
+.Sh ERRORS
+.Fn Mount
+will fail when one of the following occurs:
+.Bl -tag -width [ENOTBLK]
+.It Bq Er EPERM
+The caller is not the super-user.
+.It Bq Er ENAMETOOLONG
+A component of a pathname exceeded 255 characters,
+or the entire length of a path name exceeded 1023 characters.
+.It Bq Er ELOOP
+Too many symbolic links were encountered in translating a pathname.
+.It Bq Er ENOENT
+A component of
+.Fa dir
+does not exist.
+.It Bq Er ENOTDIR
+A component of
+.Ar name
+is not a directory,
+or a path prefix of
+.Ar special
+is not a directory.
+.It Bq Er EINVAL
+A pathname contains a character with the high-order bit set.
+.It Bq Er EBUSY
+Another process currently holds a reference to
+.Fa dir .
+.It Bq Er EFAULT
+.Fa Dir
+points outside the process's allocated address space.
+.El
+.Pp
+The following errors can occur for a
+.Em ufs
+file system mount:
+.Bl -tag -width [ENOTBLK]
+.It Bq Er ENODEV
+A component of ufs_args
+.Ar fspec
+does not exist.
+.It Bq Er ENOTBLK
+.Ar Fspec
+is not a block device.
+.It Bq Er ENXIO
+The major device number of 
+.Ar fspec
+is out of range (this indicates no device driver exists
+for the associated hardware).
+.It Bq Er EBUSY
+.Ar Fspec
+is already mounted.
+.It Bq Er EMFILE
+No space remains in the mount table.
+.It Bq Er EINVAL
+The super block for the file system had a bad magic
+number or an out of range block size.
+.It Bq Er ENOMEM
+Not enough memory was available to read the cylinder
+group information for the file system.
+.It Bq Er EIO
+An I/O error occurred while reading the super block or
+cylinder group information.
+.It Bq Er EFAULT
+.Ar Fspec
+points outside the process's allocated address space.
+.El
+.Pp
+The following errors can occur for a
+.Em nfs
+file system mount:
+.Bl -tag -width [ENOTBLK]
+.It Bq Er ETIMEDOUT
+.Em Nfs
+timed out trying to contact the server.
+.It Bq Er EFAULT
+Some part of the information described by nfs_args
+points outside the process's allocated address space.
+.El
+.Pp
+The following errors can occur for a
+.Em mfs
+file system mount:
+.Bl -tag -width [ENOTBLK]
+.It Bq Er EMFILE
+No space remains in the mount table.
+.It Bq Er EINVAL
+The super block for the file system had a bad magic
+number or an out of range block size.
+.It Bq Er ENOMEM
+Not enough memory was available to read the cylinder
+group information for the file system.
+.It Bq Er EIO
+An paging error occurred while reading the super block or
+cylinder group information.
+.It Bq Er EFAULT
+.Em Name
+points outside the process's allocated address space.
+.El
+.Pp
+.Nm Umount
+may fail with one of the following errors:
+.Bl -tag -width [ENOTBLK]
+.It Bq Er EPERM
+The caller is not the super-user.
+.It Bq Er ENOTDIR
+A component of the path is not a directory.
+.It Bq Er EINVAL
+The pathname contains a character with the high-order bit set.
+.It Bq Er ENAMETOOLONG
+A component of a pathname exceeded 255 characters,
+or an entire path name exceeded 1023 characters.
+.It Bq Er ELOOP
+Too many symbolic links were encountered in translating the pathname.
+.It Bq Er EINVAL
+The requested directory is not in the mount table.
+.It Bq Er EBUSY
+A process is holding a reference to a file located
+on the file system.
+.It Bq Er EIO
+An I/O error occurred while writing cached file system information.
+.It Bq Er EFAULT
+.Fa Dir
+points outside the process's allocated address space.
+.El
+.Pp
+A
+.Em ufs
+or
+.Em mfs
+mount can also fail if the maximum number of filesystems are currently
+mounted.
+.Sh SEE ALSO
+.Xr mount 8 ,
+.Xr umount 8 ,
+.Xr mfs 8
+.Sh BUGS
+Some of the error codes need translation to more obvious messages.
+.Sh HISTORY
+.Fn Mount
+and
+.Fn umount
+function calls appeared in Version 6 AT&T UNIX.