.\"
.\" @(#)getfsstat.2 8.1 (Berkeley) 6/9/93
.\"
-.Dd June 9, 1993
+.Dd Oct 28, 2008
.Dt GETFSSTAT 2
.Os
.Sh NAME
.Fd #include <sys/ucred.h>
.Fd #include <sys/mount.h>
.Ft int
-.Fn getfsstat "struct statfs *buf" "long bufsize" "int flags"
+.Fn getfsstat "struct statfs *buf" "int bufsize" "int flags"
+.Sh TRANSITIIONAL SYNOPSIS (NOW DEPRECATED)
+.Ft int
+.br
+.Fn getfsstat64 "struct statfs64 *buf" "int bufsize" "int flags" ;
.Sh DESCRIPTION
-.Fn Getfsstat
-returns information about all mounted file systems.
-.Fa Buf
-is a pointer to an array of
-.Xr statfs
-structures defined as follows:
-.Bd -literal
-typedef struct { int32_t val[2]; } fsid_t;
-
-#define MFSNAMELEN 15 /* length of fs type name, not inc. nul */
-#define MNAMELEN 90 /* length of buffer for returned name */
-
-struct statfs {
- short f_otype; /* type of file system (reserved: zero) */
- short f_oflags; /* copy of mount flags (reserved: zero) */
- long f_bsize; /* fundamental file system block size */
- long f_iosize; /* optimal transfer block size */
- long f_blocks; /* total data blocks in file system */
- long f_bfree; /* free blocks in fs */
- long f_bavail; /* free blocks avail to non-superuser */
- long f_files; /* total file nodes in file system */
- long f_ffree; /* free file nodes in fs */
- fsid_t f_fsid; /* file system id (super-user only) */
- uid_t f_owner; /* user that mounted the file system */
- short f_reserved1; /* reserved for future use */
- short f_type; /* type of file system (reserved) */
- long f_flags; /* copy of mount flags (reserved) */
- long f_reserved2[2]; /* reserved for future use */
- char f_fstypename[MFSNAMELEN]; /* fs type name */
- char f_mntonname[MNAMELEN]; /* directory on which mounted */
- char f_mntfromname[MNAMELEN]; /* mounted file system */
- char f_reserved3; /* reserved for future use */
- long f_reserved4[4]; /* reserved for future use */
-};
-.Ed
+The
+.Fn getfsstat
+function returns information about all mounted file systems.
+The
+.Fa buf
+argument is a pointer to an array of
+.Fa statfs
+structures (see
+.Xr statfs 2 ) .
+As
+.Xr statfs 2
+indicates, the structure is defined differently depending on
+whether the macro _DARWIN_FEATURE_64_BIT_INODE is defined (see
+.Xr stat 2
+for more information on this macro).
.Pp
Fields that are undefined for a particular file system are set to -1.
The buffer is filled with an array of
.Fn getfsstat
returns just the number of mounted file systems.
.Pp
-Normally
-.Fa flags
-should be specified as
-.Dv MNT_WAIT .
If
.Fa flags
is set to
.Dv MNT_NOWAIT ,
.Fn getfsstat
-will return the information it has available without requesting
-an update from each file system.
-Thus, some of the information will be out of date, but
+will directly return the information retained in the kernel
+to avoid delays caused by waiting for updated information from
+a file system that is perhaps temporarily unable to respond.
+Some of the information returned may be out of date, however; if
+.Fa flags
+is set to
+.Dv MNT_WAIT
+or
+.Dv MNT_DWAIT
+instead,
.Fn getfsstat
-will not block waiting for information from a file system that is
-unable to respond.
+will request updated information from each mounted filesystem before
+returning.
.Sh RETURN VALUES
Upon successful completion, the number of
.Fa statfs
.Va errno
is set to indicate the error.
.Sh ERRORS
-.Fn Getfsstat
+.Fn getfsstat
fails if one or more of the following are true:
.Bl -tag -width Er
.It Bq Er EFAULT
-.Fa Buf
-points to an invalid address.
+The
+.Fa buf
+argument points to an invalid address.
.It Bq Er EIO
An
.Tn I/O
error occurred while reading from or writing to the file system.
.El
+.Sh TRANSITIONAL DESCRIPTION (NOW DEPRECATED)
+The
+.Fn getfsstat64
+routine is equivalent to the default
+.Fn getfstat
+(when
+.Dv _DARWIN_FEATURE_64_BIT_INODE
+is defined), so there is no longer any reason to use it (it will be removed
+in the future).
.Sh SEE ALSO
+.Xr stat 2 ,
.Xr statfs 2 ,
.Xr fstab 5 ,
.Xr mount 8