STATVFS(2) | System Calls Manual | STATVFS(2)

# NAME

`statvfs`, `statvfs1`, `fstatvfs`, `fstatvfs1` —
get file system statistics

# LIBRARY

Standard C Library (libc, -lc)

# SYNOPSIS

`#include <sys/statvfs.h>`

int
`statvfs`(const char *path, struct statvfs *buf);

int
`statvfs1`(const char *path, struct statvfs *buf, int flags);

int
`fstatvfs`(int fd, struct statvfs *buf);

int
`fstatvfs1`(int fd, struct statvfs *buf, int flags);

# DESCRIPTION

`statvfs`() and `statvfs1`() return information about a mounted file system. path is the path name of any file within the mounted file system. buf is a pointer to a `statvfs` structure defined in statvfs(5).

`fstatvfs`() and `fstatvfs1`() return the same information about an open file referenced by descriptor fd.

The `statvfs1`() and `fstatvfs1`() functions allow an extra flags argument which can be `ST_WAIT` and `ST_NOWAIT`. When `ST_NOWAIT` is specified, then only cached statistics are returned. This can result in significant savings on non-local file systems, where gathering statistics involves a network communication.

The `statvfs`() and `fstatvfs`() calls are equivalent to the respective `statvfs1`() and `fstatvfs1`() calls with `ST_WAIT` specified as the flags argument.

# RETURN VALUES

Upon successful completion, a value of 0 is returned. Otherwise, -1 is returned and the global variable errno is set to indicate the error.

# ERRORS

`statvfs`() and `statvfs1`() fail if one or more of the following are true:

[`ENOTDIR`]
  A component of the path prefix of path is not a directory.
[`ENAMETOOLONG`]
  The length of a component of path exceeds {`NAME_MAX`} characters, or the length of path exceeds {`PATH_MAX`} characters.
[`ENOENT`]
  The file referred to by path does not exist.
[`EACCES`]
  Search permission is denied for a component of the path prefix of path.
[`ELOOP`]
  Too many symbolic links were encountered in translating path.
[`EFAULT`]
  buf or path points to an invalid address.
[`EIO`]
  An I/O error occurred while reading from or writing to the file system.

`fstatvfs`() and `fstatvfs1`() fail if one or more of the following are true:

[`EBADF`]
  fd is not a valid open file descriptor.
[`EFAULT`]
  buf points to an invalid address.
[`EIO`]
  An I/O error occurred while reading from or writing to the file system.

# SEE ALSO

statvfs(5)

# HISTORY

The `statvfs`(), `statvfs1`(), `fstatvfs`(), and `fstatvfs1`() functions first appeared in NetBSD 3.0 to replace the `statfs`() family of functions which first appeared in 4.4BSD.

April 14, 2004 | NetBSD 9.0