STATVFS(5)                NetBSD File Formats Manual                STATVFS(5)

NAME
     statvfs -- file system statistics

SYNOPSIS
     #include <sys/types.h>
     #include <sys/statvfs.h>

DESCRIPTION
     The <sys/statvfs.h> header defines the structures and functions that
     return information about a mounted file system.  The statvfs structure is
     defined as follows:

     typedef struct { int32_t val[2]; } fsid_t;      /* file system id type */

     #define VFS_NAMELEN  32         /* length of fs type name, including nul */
     #define VFS_MNAMELEN 1024       /* length of buffer for returned name */

     struct statvfs {
             unsigned long   f_flag;   /* copy of mount exported flags */
             unsigned long   f_bsize;  /* system block size */
             unsigned long   f_frsize; /* system fragment size */
             unsigned long   f_iosize; /* optimal file system block size */

             fsblkcnt_t      f_blocks; /* number of blocks in file system */
             fsblkcnt_t      f_bfree;  /* free blocks avail in file system */
             fsblkcnt_t      f_bavail; /* free blocks avail to non-root */
             fsblkcnt_t      f_bresvd; /* blocks reserved for root */

             fsfilcnt_t      f_files;  /* total file nodes in file system */
             fsfilcnt_t      f_ffree;  /* free file nodes in file system */
             fsfilcnt_t      f_favail; /* free file nodes avail to non-root */
             fsfilcnt_t      f_fresvd; /* file nodes reserved for root */

             uint64_t  f_syncreads;    /* count of sync reads since mount */
             uint64_t  f_syncwrites;   /* count of sync writes since mount */

             uint64_t  f_asyncreads;   /* count of async reads since mount */
             uint64_t  f_asyncwrites;  /* count of async writes since mount */

             unsigned long   f_fsid;   /* POSIX compliant file system id */
             fsid_t          f_fsidx;  /* NetBSD compatible file system id */

             unsigned long   f_namemax;/* maximum filename length */
             uid_t           f_owner; /* user that mounted the file system */

             uint32_t        f_spare[4]; /* spare space */

             char    f_fstypename[VFS_NAMELEN]; /* fs type name */
             char    f_mntonname[VFS_MNAMELEN]; /* directory on which mounted */
             char    f_mntfromname[VFS_MNAMELEN]; /* mounted file system */
     };

     The f_flag argument can have the following bits set:

     ST_RDONLY       The filesystem is mounted read-only; Even the super-user
                     may not write on it.

     ST_NOEXEC       Files may not be executed from the filesystem.

     ST_NOSUID       Setuid and setgid bits on files are not honored when they
                     are executed.

     ST_NODEV        Special files in the filesystem may not be opened.

     ST_UNION        Union with underlying filesystem instead of obscuring it.

     ST_SYNCHRONOUS  All I/O to the filesystem is done synchronously.

     ST_ASYNC        No filesystem I/O is done synchronously.

     ST_NOCOREDUMP   Don't write core dumps to this file system.

     ST_NOATIME      Never update access times.

     ST_SYMPERM      Recognize symbolic link permission.

     ST_NODEVMTIME   Never update modification times for device files.

     ST_SOFTDEP      Use soft dependencies.

     ST_LOCAL        The filesystem resides locally.

     ST_QUOTA        The filesystem has quotas enabled on it.

     ST_ROOTFS       Identifies the root filesystem.

     ST_EXRDONLY     The filesystem is exported read-only.

     ST_EXPORTED     The filesystem is exported for both reading and writing.

     ST_DEFEXPORTED  The filesystem is exported for both reading and writing
                     to any Internet host.

     ST_EXPORTANON   The filesystem maps all remote accesses to the anonymous
                     user.

     ST_EXKERB       The filesystem is exported with Kerberos uid mapping.

     ST_EXNORESPORT  Don't enforce reserved ports (NFS).

     ST_EXPUBLIC     Public export (WebNFS).

     Fields that are undefined for a particular file system are set to -1.

NOTES
     f_flag    The f_flag field is the same as the f_flags field in the 4.3BSD
               statfs(2) system call.

     f_fsid    Is defined to be unsigned long by the X/Open standard.  Unfor-
               tunately this is not enough space to store our fsid_t, so we
               define an additional f_fsidx field.

     f_bavail  Could historically be negative (in the statfs(2) system call)
               when the used space has exceeded the non-superuser free space.
               In order to comply with the X/Open standard, we have to define
               fsblkcnt_t as an unsigned type, so in all cases where f_bavail
               would have been negative, we set it to 0.  In addition we pro-
               vide f_bresvd which contains the amount of reserved blocks for
               the superuser, so the old value of f_bavail can be easily com-
               puted as:

                       old_bavail = f_bfree - f_bresvd;

SEE ALSO
     statvfs(2)

HISTORY
     The <sys/statvfs.h> header first appeared in NetBSD 3.0.

NetBSD 5.0_STABLE                June 23, 2008               NetBSD 5.0_STABLE
