2004-11-03 13:51:07 +00:00
|
|
|
.\" Copyright (C) 2003 Andries Brouwer (aeb@cwi.nl)
|
|
|
|
.\"
|
|
|
|
.\" Permission is granted to make and distribute verbatim copies of this
|
|
|
|
.\" manual provided the copyright notice and this permission notice are
|
|
|
|
.\" preserved on all copies.
|
|
|
|
.\"
|
|
|
|
.\" Permission is granted to copy and distribute modified versions of this
|
|
|
|
.\" manual under the conditions for verbatim copying, provided that the
|
|
|
|
.\" entire resulting derived work is distributed under the terms of a
|
|
|
|
.\" permission notice identical to this one.
|
2007-04-12 22:42:49 +00:00
|
|
|
.\"
|
2004-11-03 13:51:07 +00:00
|
|
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
|
|
|
.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
|
|
.\" responsibility for errors or omissions, or for damages resulting from
|
|
|
|
.\" the use of the information contained herein. The author(s) may not
|
|
|
|
.\" have taken the same level of care in the production of this manual,
|
|
|
|
.\" which is licensed free of charge, as they might when working
|
|
|
|
.\" professionally.
|
2007-04-12 22:42:49 +00:00
|
|
|
.\"
|
2004-11-03 13:51:07 +00:00
|
|
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
|
|
.\" the source, must acknowledge the copyright and authors of this work.
|
|
|
|
.\"
|
|
|
|
.\" Modified 2003-08-17 by Walter Harms
|
2007-09-20 06:52:22 +00:00
|
|
|
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
|
2004-11-03 13:51:07 +00:00
|
|
|
.\"
|
2010-11-21 06:03:45 +00:00
|
|
|
.TH STATFS 2 2010-11-21 "Linux" "Linux Programmer's Manual"
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH NAME
|
|
|
|
statfs, fstatfs \- get file system statistics
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.BR "#include <sys/vfs.h> " "/* or <sys/statfs.h> */"
|
|
|
|
.sp
|
|
|
|
.BI "int statfs(const char *" path ", struct statfs *" buf );
|
|
|
|
.br
|
|
|
|
.BI "int fstatfs(int " fd ", struct statfs *" buf );
|
|
|
|
.SH DESCRIPTION
|
|
|
|
The function
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR statfs ()
|
2004-11-03 13:51:07 +00:00
|
|
|
returns information about a mounted file system.
|
|
|
|
.I path
|
2008-03-19 07:26:08 +00:00
|
|
|
is the pathname of any file within the mounted file system.
|
2004-11-03 13:51:07 +00:00
|
|
|
.I buf
|
|
|
|
is a pointer to a
|
|
|
|
.I statfs
|
|
|
|
structure defined approximately as follows:
|
|
|
|
|
2007-12-19 06:16:04 +00:00
|
|
|
.in +4n
|
2004-11-03 13:51:07 +00:00
|
|
|
.nf
|
2010-06-13 03:45:16 +00:00
|
|
|
#if __WORDSIZE == 32 /* System word size */
|
2010-09-04 04:45:06 +00:00
|
|
|
# define __SWORD_TYPE int
|
2010-06-13 03:45:16 +00:00
|
|
|
#else /* __WORDSIZE == 64 */
|
|
|
|
# define __SWORD_TYPE long int
|
|
|
|
#endif
|
|
|
|
|
2004-11-03 13:51:07 +00:00
|
|
|
struct statfs {
|
2010-06-13 03:45:16 +00:00
|
|
|
__SWORD_TYPE f_type; /* type of file system (see below) */
|
|
|
|
__SWORD_TYPE f_bsize; /* optimal transfer block size */
|
|
|
|
fsblkcnt_t f_blocks; /* total data blocks in file system */
|
|
|
|
fsblkcnt_t f_bfree; /* free blocks in fs */
|
|
|
|
fsblkcnt_t f_bavail; /* free blocks available to
|
|
|
|
unprivileged user */
|
|
|
|
fsfilcnt_t f_files; /* total file nodes in file system */
|
|
|
|
fsfilcnt_t f_ffree; /* free file nodes in fs */
|
|
|
|
fsid_t f_fsid; /* file system id */
|
|
|
|
__SWORD_TYPE f_namelen; /* maximum length of filenames */
|
|
|
|
__SWORD_TYPE f_frsize; /* fragment size (since Linux 2.6) */
|
|
|
|
__SWORD_TYPE f_spare[5];
|
2004-11-03 13:51:07 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
File system types:
|
|
|
|
|
|
|
|
ADFS_SUPER_MAGIC 0xadf5
|
|
|
|
AFFS_SUPER_MAGIC 0xADFF
|
|
|
|
BEFS_SUPER_MAGIC 0x42465331
|
|
|
|
BFS_MAGIC 0x1BADFACE
|
|
|
|
CIFS_MAGIC_NUMBER 0xFF534D42
|
|
|
|
CODA_SUPER_MAGIC 0x73757245
|
|
|
|
COH_SUPER_MAGIC 0x012FF7B7
|
|
|
|
CRAMFS_MAGIC 0x28cd3d45
|
|
|
|
DEVFS_SUPER_MAGIC 0x1373
|
|
|
|
EFS_SUPER_MAGIC 0x00414A53
|
|
|
|
EXT_SUPER_MAGIC 0x137D
|
|
|
|
EXT2_OLD_SUPER_MAGIC 0xEF51
|
|
|
|
EXT2_SUPER_MAGIC 0xEF53
|
|
|
|
EXT3_SUPER_MAGIC 0xEF53
|
2010-05-24 13:05:59 +00:00
|
|
|
EXT4_SUPER_MAGIC 0xEF53
|
2004-11-03 13:51:07 +00:00
|
|
|
HFS_SUPER_MAGIC 0x4244
|
|
|
|
HPFS_SUPER_MAGIC 0xF995E849
|
|
|
|
HUGETLBFS_MAGIC 0x958458f6
|
|
|
|
ISOFS_SUPER_MAGIC 0x9660
|
|
|
|
JFFS2_SUPER_MAGIC 0x72b6
|
|
|
|
JFS_SUPER_MAGIC 0x3153464a
|
|
|
|
MINIX_SUPER_MAGIC 0x137F /* orig. minix */
|
|
|
|
MINIX_SUPER_MAGIC2 0x138F /* 30 char minix */
|
|
|
|
MINIX2_SUPER_MAGIC 0x2468 /* minix V2 */
|
|
|
|
MINIX2_SUPER_MAGIC2 0x2478 /* minix V2, 30 char names */
|
|
|
|
MSDOS_SUPER_MAGIC 0x4d44
|
|
|
|
NCP_SUPER_MAGIC 0x564c
|
|
|
|
NFS_SUPER_MAGIC 0x6969
|
|
|
|
NTFS_SB_MAGIC 0x5346544e
|
|
|
|
OPENPROM_SUPER_MAGIC 0x9fa1
|
|
|
|
PROC_SUPER_MAGIC 0x9fa0
|
|
|
|
QNX4_SUPER_MAGIC 0x002f
|
|
|
|
REISERFS_SUPER_MAGIC 0x52654973
|
|
|
|
ROMFS_MAGIC 0x7275
|
|
|
|
SMB_SUPER_MAGIC 0x517B
|
|
|
|
SYSV2_SUPER_MAGIC 0x012FF7B6
|
|
|
|
SYSV4_SUPER_MAGIC 0x012FF7B5
|
|
|
|
TMPFS_MAGIC 0x01021994
|
|
|
|
UDF_SUPER_MAGIC 0x15013346
|
|
|
|
UFS_MAGIC 0x00011954
|
|
|
|
USBDEVICE_SUPER_MAGIC 0x9fa2
|
|
|
|
VXFS_SUPER_MAGIC 0xa501FCF5
|
|
|
|
XENIX_SUPER_MAGIC 0x012FF7B4
|
|
|
|
XFS_SUPER_MAGIC 0x58465342
|
|
|
|
_XIAFS_SUPER_MAGIC 0x012FD16D
|
|
|
|
.fi
|
2007-12-19 06:16:04 +00:00
|
|
|
.in
|
2004-11-03 13:51:07 +00:00
|
|
|
.PP
|
|
|
|
Nobody knows what
|
|
|
|
.I f_fsid
|
|
|
|
is supposed to contain (but see below).
|
|
|
|
.PP
|
|
|
|
Fields that are undefined for a particular file system are set to 0.
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR fstatfs ()
|
2004-11-03 13:51:07 +00:00
|
|
|
returns the same information about an open file referenced by descriptor
|
|
|
|
.IR fd .
|
|
|
|
.SH "RETURN VALUE"
|
2007-04-12 22:42:49 +00:00
|
|
|
On success, zero is returned.
|
|
|
|
On error, \-1 is returned, and
|
2004-11-03 13:51:07 +00:00
|
|
|
.I errno
|
|
|
|
is set appropriately.
|
|
|
|
.SH ERRORS
|
|
|
|
.TP
|
|
|
|
.B EACCES
|
2005-10-20 15:11:10 +00:00
|
|
|
.RB ( statfs ())
|
2004-11-03 13:51:07 +00:00
|
|
|
Search permission is denied for a component of the path prefix of
|
|
|
|
.IR path .
|
|
|
|
(See also
|
2007-05-26 12:41:39 +00:00
|
|
|
.BR path_resolution (7).)
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
|
|
|
.B EBADF
|
2005-10-20 15:11:10 +00:00
|
|
|
.RB ( fstatfs ())
|
2004-11-03 13:51:07 +00:00
|
|
|
.I fd
|
|
|
|
is not a valid open file descriptor.
|
|
|
|
.TP
|
|
|
|
.B EFAULT
|
|
|
|
.I buf
|
|
|
|
or
|
|
|
|
.I path
|
|
|
|
points to an invalid address.
|
|
|
|
.TP
|
|
|
|
.B EINTR
|
|
|
|
This call was interrupted by a signal.
|
|
|
|
.TP
|
|
|
|
.B EIO
|
|
|
|
An I/O error occurred while reading from the file system.
|
|
|
|
.TP
|
|
|
|
.B ELOOP
|
2005-10-20 15:11:10 +00:00
|
|
|
.RB ( statfs ())
|
2004-11-03 13:51:07 +00:00
|
|
|
Too many symbolic links were encountered in translating
|
|
|
|
.IR path .
|
|
|
|
.TP
|
|
|
|
.B ENAMETOOLONG
|
2005-10-20 15:11:10 +00:00
|
|
|
.RB ( statfs ())
|
2004-11-03 13:51:07 +00:00
|
|
|
.I path
|
|
|
|
is too long.
|
|
|
|
.TP
|
|
|
|
.B ENOENT
|
2005-10-20 15:11:10 +00:00
|
|
|
.RB ( statfs ())
|
2004-11-03 13:51:07 +00:00
|
|
|
The file referred to by
|
|
|
|
.I path
|
|
|
|
does not exist.
|
|
|
|
.TP
|
|
|
|
.B ENOMEM
|
|
|
|
Insufficient kernel memory was available.
|
|
|
|
.TP
|
|
|
|
.B ENOSYS
|
|
|
|
The file system does not support this call.
|
|
|
|
.TP
|
|
|
|
.B ENOTDIR
|
2005-10-20 15:11:10 +00:00
|
|
|
.RB ( statfs ())
|
2004-11-03 13:51:07 +00:00
|
|
|
A component of the path prefix of
|
|
|
|
.I path
|
|
|
|
is not a directory.
|
|
|
|
.TP
|
|
|
|
.B EOVERFLOW
|
|
|
|
Some values were too large to be represented in the returned struct.
|
|
|
|
.SH "CONFORMING TO"
|
2007-12-25 21:28:09 +00:00
|
|
|
Linux-specific.
|
2004-11-03 13:51:07 +00:00
|
|
|
The Linux
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR statfs ()
|
2004-11-03 13:51:07 +00:00
|
|
|
was inspired by the 4.4BSD one
|
|
|
|
(but they do not use the same structure).
|
2006-05-26 19:32:04 +00:00
|
|
|
.SH NOTES
|
2010-11-21 06:03:45 +00:00
|
|
|
The original Linux
|
|
|
|
.BR statfs ()
|
|
|
|
and
|
|
|
|
.BR fstatfs ()
|
|
|
|
system calls were not designed with extremely large file sizes in mind.
|
|
|
|
Subsequently, Linux 2.6
|
|
|
|
added new
|
|
|
|
.BR statfs64 ()
|
2006-05-26 19:32:04 +00:00
|
|
|
and
|
|
|
|
.BR fstatfs64 ()
|
2010-11-21 06:03:45 +00:00
|
|
|
system calls that employ a new structure,
|
|
|
|
.IR statfs64 .
|
|
|
|
The new structure contains the same fields as the original
|
|
|
|
.I statfs
|
|
|
|
structure, but the sizes of various fields are increased,
|
|
|
|
to accommodate large file sizes.
|
|
|
|
The glibc
|
|
|
|
.BR statfs ()
|
|
|
|
and
|
|
|
|
.BR fstatfs ()
|
|
|
|
wrapper functions transparently deal with the kernel differences.
|
2006-05-26 19:32:04 +00:00
|
|
|
|
2007-06-20 21:53:34 +00:00
|
|
|
Some systems only have \fI<sys/vfs.h>\fP, other systems also have
|
|
|
|
\fI<sys/statfs.h>\fP, where the former includes the latter.
|
2007-04-12 22:42:49 +00:00
|
|
|
So it seems
|
2006-05-26 19:32:04 +00:00
|
|
|
including the former is the best choice.
|
|
|
|
|
|
|
|
LSB has deprecated the library calls
|
|
|
|
.BR statfs ()
|
|
|
|
and
|
|
|
|
.BR fstatfs ()
|
|
|
|
and tells us to use
|
2007-05-11 23:07:02 +00:00
|
|
|
.BR statvfs (2)
|
2006-05-26 19:32:04 +00:00
|
|
|
and
|
2007-05-11 23:07:02 +00:00
|
|
|
.BR fstatvfs (2)
|
2006-05-26 19:32:04 +00:00
|
|
|
instead.
|
|
|
|
.SS The f_fsid field
|
2004-11-03 13:51:07 +00:00
|
|
|
Solaris, Irix and POSIX have a system call
|
|
|
|
.BR statvfs (2)
|
|
|
|
that returns a
|
2005-11-02 13:55:25 +00:00
|
|
|
.I "struct statvfs"
|
2004-11-03 13:51:07 +00:00
|
|
|
(defined in
|
2007-12-09 08:08:53 +00:00
|
|
|
.IR <sys/statvfs.h> )
|
2004-11-03 13:51:07 +00:00
|
|
|
containing an
|
2006-02-09 20:24:53 +00:00
|
|
|
.I "unsigned long"
|
2004-11-03 13:51:07 +00:00
|
|
|
.IR f_fsid .
|
2006-08-03 13:57:17 +00:00
|
|
|
Linux, SunOS, HP-UX, 4.4BSD have a system call
|
2005-11-02 11:34:24 +00:00
|
|
|
.BR statfs ()
|
2004-11-03 13:51:07 +00:00
|
|
|
that returns a
|
2005-11-02 13:55:25 +00:00
|
|
|
.I "struct statfs"
|
2004-11-03 13:51:07 +00:00
|
|
|
(defined in
|
2007-12-09 08:08:53 +00:00
|
|
|
.IR <sys/vfs.h> )
|
2004-11-03 13:51:07 +00:00
|
|
|
containing a
|
2006-02-09 20:24:53 +00:00
|
|
|
.I fsid_t
|
2004-11-03 13:51:07 +00:00
|
|
|
.IR f_fsid ,
|
|
|
|
where
|
|
|
|
.I fsid_t
|
|
|
|
is defined as
|
2005-11-02 13:55:25 +00:00
|
|
|
.IR "struct { int val[2]; }" .
|
2004-11-03 13:51:07 +00:00
|
|
|
The same holds for FreeBSD, except that it uses the include file
|
2007-12-09 08:08:53 +00:00
|
|
|
.IR <sys/mount.h> .
|
2004-11-03 13:51:07 +00:00
|
|
|
|
|
|
|
The general idea is that
|
|
|
|
.I f_fsid
|
|
|
|
contains some random stuff such that the pair
|
|
|
|
.RI ( f_fsid , ino )
|
|
|
|
uniquely determines a file.
|
2010-06-13 03:30:04 +00:00
|
|
|
Some operating systems use (a variation on) the device number, or the device number
|
2008-03-19 07:26:08 +00:00
|
|
|
combined with the file-system type.
|
2004-11-03 13:51:07 +00:00
|
|
|
Several OSes restrict giving out the
|
|
|
|
.I f_fsid
|
2006-06-03 01:26:30 +00:00
|
|
|
field to the superuser only (and zero it for unprivileged users),
|
2008-03-19 07:26:08 +00:00
|
|
|
because this field is used in the filehandle of the file system
|
2004-11-03 13:51:07 +00:00
|
|
|
when NFS-exported, and giving it out is a security concern.
|
|
|
|
.LP
|
2010-11-01 06:42:29 +00:00
|
|
|
Under some operating systems the
|
2004-11-03 13:51:07 +00:00
|
|
|
.I fsid
|
2008-07-10 20:53:08 +00:00
|
|
|
can be used as second argument to the
|
Changes, clone.2, mount.2, nanosleep.2, sigaltstack.2, statfs.2, timer_settime.2, ctime.3, fmemopen.3, nl_langinfo.3, posix_memalign.3, pthread_attr_init.3, pthread_setaffinity_np.3, pthread_setschedprio.3, pthread_testcancel.3, setjmp.3, sigwait.3, tty_ioctl.4, epoll.7, posixoptions.7, unix.7: Add section number to references to functions documented in other pages
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2010-11-01 07:07:28 +00:00
|
|
|
.BR sysfs (2)
|
2004-11-03 13:51:07 +00:00
|
|
|
system call.
|
|
|
|
.SH "SEE ALSO"
|
|
|
|
.BR stat (2),
|
2007-05-26 12:41:39 +00:00
|
|
|
.BR statvfs (2),
|
|
|
|
.BR path_resolution (7)
|