Documentation Archive Developer
Search
ADC Home > Reference Library > Reference > Mac OS X > Mac OS X Man Pages

 

This document is a Mac OS X manual page. Manual pages are a command-line technology for providing documentation. You can view these manual pages locally using the man(1) command. These manual pages come from many different sources, and thus, have a variety of writing styles.

This manual page is associated with the Mac OS X developer tools. The software or headers described may not be present on your Mac OS X installation until you install the developer tools package. This package is available on your Mac OS X installation DVD, and the latest versions can be downloaded from developer.apple.com.

For more information about the manual page format, see the manual page for manpages(5).



STATFS(2)                   BSD System Calls Manual                  STATFS(2)

NAME
     statfs, statfs64, fstatfs, fstatfs64 -- get file system statistics

SYNOPSIS
     #include <sys/param.h>
     #include <sys/mount.h>

     int
     statfs(const char *path, struct statfs *buf);

     int
     statfs64(const char *path, struct statfs64 *buf);

     int
     fstatfs(int fd, struct statfs *buf);

     int
     fstatfs64(int fd, struct statfs64 *buf);

DESCRIPTION
     Statfs() returns 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 statfs or statfs64 structure defined as follows:

     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 */
     #define MFSTYPENAMELEN  16 /* length of fs type name including null */
     #define MAXPATHLEN      1024

     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 */
         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 */
     };

     struct statfs64 {
         uint32_t        f_bsize;        /* fundamental file system block size */
         int32_t         f_iosize;       /* optimal transfer block size */
         uint64_t        f_blocks;       /* total data blocks in file system */
         uint64_t        f_bfree;        /* free blocks in fs */
         uint64_t        f_bavail;       /* free blocks avail to non-superuser */
         uint64_t        f_files;        /* total file nodes in file system */
         uint64_t        f_ffree;        /* free file nodes in fs */
         fsid_t          f_fsid;         /* file system id */
         uid_t           f_owner;        /* user that mounted the filesystem */
         uint32_t        f_type;         /* type of filesystem */
         uint32_t        f_flags;        /* copy of mount exported flags */
         uint32_t        f_fssubtype;    /* fs sub-type (flavor) */
         char            f_fstypename[MFSTYPENAMELEN];   /* fs type name */
         char            f_mntonname[MAXPATHLEN];        /* directory on which mounted */
         char            f_mntfromname[MAXPATHLEN];      /* mounted filesystem */
         uint32_t        f_reserved[8];  /* For future use */
     };

     Fields that are undefined for a particular file system are set to -1.
     Fstatfs() returns the same information about an open file referenced by
     descriptor fd.

FLAGS
     These are some of the flags that may be present in the f_flags field.

     MNT_RDONLY             A read-only filesystem

     MNT_SYNCHRONOUS        File system is written to synchronously

     MNT_NOEXEC             Can't exec from filesystem

     MNT_NOSUID             Setuid bits are not honored on this filesystem

     MNT_NODEV              Don't interpret special files

     MNT_UNION              Union with underlying filesysten

     MNT_ASYNC              File system written to asynchronously

     MNT_EXPORTED           File system is exported File system is stored
                            locally

     MNT_QUOTA              Quotas are enabled on this file system

     MNT_ROOTFS             This file system is the root of the file system

     MNT_DOVOLFS            File system supports volfs

     MNT_DONTBROWSE         File system is not appropriate path to user data

     MNT_UNKNOWNPERMISSIONS
                            VFS will ignore ownership information on filesys-tem filesystem
                            tem objects

     MNT_AUTOMOUNTED        File system was mounted by automounter

     MNT_JOURNALED          File system is journaled

     MNT_DEFWRITE           File system should defer writes

     MNT_MULTILABEL         MAC support for individual labels

CAVEATS
     In Mac OS X versions before 10.4, f_iosize is 4096. On these older sys-tems, systems,
     tems, use MAXBSIZE instead.

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
     Statfs() fails if one or more of the following are true:

     [ENOTDIR]          A component of the path prefix of Path is not a direc-tory. directory.
                        tory.

     [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 translat-ing translating
                        ing 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.

     Fstatfs() fails 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.

HISTORY
     The statfs() function first appeared in 4.4BSD. The statfs64() and
     fstatfs64() first appeared in Max OS X 10.5 (Leopard).

BSD                            February 11, 1994                           BSD