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
ST_NOEXEC
ST_NOSUID
ST_NODEV
ST_UNION
ST_SYNCHRONOUS
ST_ASYNC
ST_NOCOREDUMP
ST_NOATIME
ST_SYMPERM
ST_NODEVMTIME
ST_SOFTDEP
ST_LOCAL
ST_QUOTA
ST_ROOTFS
ST_EXRDONLY
ST_EXPORTED
ST_DEFEXPORTED
ST_EXPORTANON
ST_EXKERB
ST_EXNORESPORT
ST_EXPUBLIC
Fields that are undefined for a particular file system are set to -1.
f_flag
field is the same as the
f_flags
field in the
4.3BSD
statfs(2)
system call.
unsigned
long
by the X/Open standard.
Unfortunately this is not enough space to store our
fsid_t
,
so we define an additional
f_fsidx
field.
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 provide
f_bresvd
which contains the amount of reserved blocks for the superuser, so
the old value of
f_bavail
can be easily computed as:
old_bavail = f_bfree - f_bresvd;
sys/statvfs.h
>
header first appeared in
NetBSD3.0.