Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
MOUNT(2)		   Linux Programmer's Manual		      MOUNT(2)

       mount, umount - mount and unmount filesystems.

       #include	<sys/mount.h>

       int  mount(const	char *source, const char *target, const	char *filesys-
       temtype,	unsigned long mountflags, const	void *data);

       int umount(const	char *target);

       int umount2(const char *target, int flags);

       mount attaches the filesystem specified by source (which	is often a de-
       vice  name,  but	can also be a directory	name or	a dummy) to the	direc-
       tory specified by target.

       umount and umount2 remove the attachment	of  the	 (topmost)  filesystem
       mounted on target.

       Only the	super-user may mount and unmount filesystems.  Since Linux 2.4
       a single	filesystem can be visible at multiple mount points, and	multi-
       ple mounts can be stacked on the	same mount point.

       Values  for  the	 filesystemtype	 argument  supported by	the kernel are
       listed in /proc/filesystems (like  "minix",  "ext2",  "msdos",  "proc",
       "nfs",  "iso9660"  etc.).   Further types may become available when the
       appropriate modules are loaded.

       The mountflags argument may have	the magic number  0xC0ED  (MS_MGC_VAL)
       in  the top 16 bits (this was required in kernel	versions prior to 2.4,
       but is no longer	required and ignored if	specified), and	various	 mount
       flags   (as  defined  in	 <linux/fs.h>  for  libc4  and	libc5  and  in
       <sys/mount.h> for glibc2) in the	low order 16 bits:

	      (Linux 2.4 onwards) Perform a bind mount,	making a file or a di-
	      rectory  subtree	visible	at another point within	a file system.
	      Bind mounts may cross file system	boundaries and span  chroot(2)
	      jails.   The  filesystemtype, mountflags,	and data arguments are

	      Permit mandatory locking on files	in this	file system.   (Manda-
	      tory  locking  must still	be enabled on a	per-file basis,	as de-
	      scribed in fcntl(2).)

	      Move a subtree.  source specifies	an existing  mount  point  and
	      target  specifies	 the  new location.  The move is atomic: at no
	      point is the subtree unmounted.  The filesystemtype, mountflags,
	      and data arguments are ignored.

	      Do not update access times for (all types	of) files on this file

	      Do not allow access to devices (special files) on	this file sys-

	      Do not update access times for directories on this file system.

	      Do not allow programs to be executed from	this file system.

	      Do  not  honour set-UID and set-GID bits when executing programs
	      from this	file system.

	      Mount file system	read-only.

	      Remount an existing mount.  This is allows  you  to  change  the
	      mountflags  and  data of an existing mount without having	to un-
	      mount and	remount	the file system.  source and target should  be
	      the  same	values specified in the	initial	mount()	call; filesys-
	      temtype is ignored.

	      Make writes on this  file	 system	 synchronous  (as  though  the
	      O_SYNC  flag to open(2) was specified for	all file opens to this
	      file system).

       From Linux 2.4 onwards, the MS_NODEV, MS_NOEXEC,	 and  MS_NOSUID	 flags
       are settable on a per-mount point basis.

       The  data argument is interpreted by the	different file systems.	 Typi-
       cally it	is a string of comma-separated options understood by this file
       system.	 See  mount(8)	for  details of	the options available for each
       filesystem type.

       Linux 2.1.116 added the umount2() system	call,  which,  like  umount(),
       unmounts	 a  target, but	allows additional flags	controlling the	behav-
       iour of the operation:

	      Force unmount even  if  busy.   (Since  2.1.116.	Only  for  NFS

	      Perform a	lazy unmount: make the mount point unavailable for new
	      accesses,	and actually perform the unmount when the mount	 point
	      ceases to	be busy. (Since	2.4.11.)

       On  success,  zero is returned.	On error, -1 is	returned, and errno is
       set appropriately.

       The error values	given below result from	 filesystem  type  independent
       errors.	Each  filesystem  type may have	its own	special	errors and its
       own special behavior.  See the kernel source code for details.

       EPERM  The user is not the super-user.

       ENODEV Filesystemtype not configured in the kernel.

	      Source is	not a block device (and	a device was required).

       EBUSY  Source is	already	mounted. Or, it	cannot be remounted read-only,
	      because it still holds files open	for writing.  Or, it cannot be
	      mounted on target	because	target is still	busy (it is the	 work-
	      ing  directory  of some task, the	mount point of another device,
	      has open files, etc.).  Or, it could not be unmounted because it
	      is busy.

       EINVAL Source  had an invalid superblock.  Or, a	remount	was attempted,
	      while source was not already mounted on target.  Or, a move  was
	      attempted,  while	source was not a mount point, or was '/'.  Or,
	      an umount	was attempted, while target was	not a mount point.

	      The second argument, or a	prefix of the first argument, is not a

       EFAULT One  of  the  pointer  arguments points outside the user address

       ENOMEM The kernel could not allocate a free page	to copy	 filenames  or
	      data into.

	      A	pathname was longer than MAXPATHLEN.

       ENOENT A	pathname was empty or had a nonexistent	component.

       ELOOP  Too  many	 link  encountered  during pathname resolution.	 Or, a
	      move was attempted, while	target is a descendant of source.

       EACCES A	component of a path was	not searchable.
	      Or, mounting a read-only filesystem was attempted	without	giving
	      the MS_RDONLY flag.
	      Or,  the	block device Source is located on a filesystem mounted
	      with the MS_NODEV	option.

       ENXIO  The major	number of the block device source is out of range.

       EMFILE (In case no block	device is required:) Table of dummy devices is

       These  functions	 are Linux-specific and	should not be used in programs
       intended	to be portable.

       The original umount function was	called as umount(device) and would re-
       turn  ENOTBLK when called with something	other than a block device.  In
       Linux 0.98p4 a call umount(dir) was added, in order to  support	anony-
       mous  devices.	In  Linux  2.3.99-pre7 the call	umount(device) was re-
       moved, leaving only umount(dir) (since now devices can  be  mounted  in
       more than one place, so specifying the device does not suffice).

       The  original  MS_SYNC flag was renamed MS_SYNCHRONOUS in 1.1.69	when a
       different MS_SYNC was added to <mman.h>.

       Before Linux 2.4	an attempt to execute a	set-UID	or set-GID program  on
       a filesystem mounted with MS_NOSUID would fail with EPERM.  Since Linux
       2.4 the set-UID and set-GID bits	are  just  silently  ignored  in  this

       mount(8), umount(8)

Linux 2.5			  2002-06-11			      MOUNT(2)


Want to link to this manual page? Use this URL:

home | help