.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 DESCRIPTION
.Fn Getfsstat
returns information about all mounted file systems.
.Bd -literal
typedef struct { int32_t val[2]; } fsid_t;
-#define MFSNAMELEN 16 /* length of fs type name, including nul */
-#define MNAMELEN 32 /* length of buffer for returned name */
+#define MFSNAMELEN 15 /* length of fs type name, not inc. nul */
+#define MNAMELEN 90 /* length of buffer for returned name */
struct statfs {
- short f_type; /* type of file system (unused; zero) */
- short f_flags; /* copy of mount flags */
+ 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_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 */
+ fsid_t f_fsid; /* file system id (super-user only) */
uid_t f_owner; /* user that mounted the file system */
- long f_spare[4]; /* spare for later */
+ 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
.Pp
.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
+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