NAME
statvfs, fstatvfs - get file system statistics
SYNOPSIS
#include <sys/statvfs.h>
int statvfs(const char *path, struct statvfs *buf); int fstatvfs(int fd, struct statvfs *buf);
DESCRIPTION
The function statvfs() returns information about a mounted file system. path is the pathname of any file within the mounted file system. buf is a pointer to a statvfs structure defined approximately as follows:
struct statvfs { unsigned long f_bsize; /* file system block size */ unsigned long f_frsize; /* fragment size */ fsblkcnt_t f_blocks; /* size of fs in f_frsize units */ fsblkcnt_t f_bfree; /* # free blocks */ fsblkcnt_t f_bavail; /* # free blocks for non-root */ fsfilcnt_t f_files; /* # inodes */ fsfilcnt_t f_ffree; /* # free inodes */ fsfilcnt_t f_favail; /* # free inodes for non-root */ unsigned long f_fsid; /* file system ID */ unsigned long f_flag; /* mount flags */ unsigned long f_namemax; /* maximum filename length */ };
Here the types fsblkcnt_t and fsfilcnt_t are defined in <sys/types.h>. Both used to be unsigned long.
The field f_flag is a bit mask (of mount flags, see mount(8)). Bits defined by POSIX are
ST_RDONLY | |
Read-only file system. | |
ST_NOSUID | |
Set-user-ID/set-group-ID bits are ignored by exec(3). | |
fstatvfs() returns the same information about an open file referenced by descriptor fd.
RETURN VALUE
On success, zero is returned. On error, -1 is returned, and errno is set appropriately.
ERRORS
EACCES | (statvfs()) Search permission is denied for a component of the path prefix of path. (See also path_resolution(7).) |
EBADF | (fstatvfs()) fd is not a valid open file descriptor. |
EFAULT | Buf or path points to an invalid address. |
EINTR | This call was interrupted by a signal. |
EIO | An I/O error occurred while reading from the file system. |
ELOOP | (statvfs()) Too many symbolic links were encountered in translating path. |
ENAMETOOLONG | |
(statvfs()) path is too long. | |
ENOENT | (statvfs()) The file referred to by path does not exist. |
ENOMEM | Insufficient kernel memory was available. |
ENOSYS | The file system does not support this call. |
ENOTDIR | |
(statvfs()) A component of the path prefix of path is not a directory. | |
EOVERFLOW | |
Some values were too large to be represented in the returned struct. | |
CONFORMING TO
POSIX.1-2001.
NOTES
The Linux kernel has system calls statfs(2) and fstatfs(2) to support this library call.
The current glibc implementations of
pathconf(path, _PC_REC_XFER_ALIGN); pathconf(path, _PC_ALLOC_SIZE_MIN); pathconf(path, _PC_REC_MIN_XFER_SIZE);
respectively use the f_frsize, f_frsize, and f_bsize fields of the return value of statvfs(path,buf).
SEE ALSO
COLOPHON
This page is part of release 3.23 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.