/* * Copyright (c) 1982, 1986 Regents of the University of California. * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * * @(#)mount.h 7.2.5 (2.11BSD GTE) 1997/6/29 */ /* * file system statistics */ #include #define MNAMELEN 90 /* length of buffer for returned name */ struct statfs { short f_type; /* type of filesystem (see below) */ u_short f_flags; /* copy of mount flags */ short f_bsize; /* fundamental file system block size */ short f_iosize; /* optimal transfer block size */ daddr_t f_blocks; /* total data blocks in file system */ daddr_t f_bfree; /* free blocks in fs */ daddr_t f_bavail; /* free blocks avail to non-superuser */ ino_t f_files; /* total file nodes in file system */ ino_t f_ffree; /* free file nodes in fs */ long f_fsid[2]; /* file system id */ long f_spare[5]; /* spare for later */ char f_mntonname[MNAMELEN]; /* directory on which mounted */ char f_mntfromname[MNAMELEN];/* mounted filesystem */ }; /* * File system types. Since only UFS is supported the others are not * specified at this time. */ #define MOUNT_NONE 0 #define MOUNT_UFS 1 /* Fast Filesystem */ #define MOUNT_MAXTYPE 1 #define INITMOUNTNAMES { \ "none", /* 0 MOUNT_NONE */ \ "ufs", /* 1 MOUNT_UFS */ \ 0, \ } /* * Mount structure. * One allocated on every mount. * Used to find the super block. */ struct mount { dev_t m_dev; /* device mounted */ struct fs m_filsys; /* superblock data */ #define m_flags m_filsys.fs_flags struct inode *m_inodp; /* pointer to mounted on inode */ struct inode *m_qinod; /* QUOTA: pointer to quota file */ memaddr m_extern; /* click address of mount table extension */ }; struct xmount { char xm_mntfrom[MNAMELEN]; /* /dev/xxxx mounted from */ char xm_mnton[MNAMELEN]; /* directory mounted on - this is the * full(er) version of fs_fsmnt. */ }; #define XMOUNTDESC (((btoc(sizeof (struct xmount)) - 1) << 8) | RW) /* * Mount flags. */ #define MNT_RDONLY 0x0001 /* read only filesystem */ #define MNT_SYNCHRONOUS 0x0002 /* file system written synchronously */ #define MNT_NOEXEC 0x0004 /* can't exec from filesystem */ #define MNT_NOSUID 0x0008 /* don't honor setuid bits on fs */ #define MNT_NODEV 0x0010 /* don't interpret special files */ #define MNT_QUOTA 0x0020 /* quotas are enabled on filesystem */ #define MNT_ASYNC 0x0040 /* file system written asynchronously */ #define MNT_NOATIME 0x0080 /* don't update access times */ /* * Mask of flags that are visible to statfs(). */ #define MNT_VISFLAGMASK 0x0fff /* * filesystem control flags. The high 4 bits are used for this. Since NFS * support will never be a problem we can avoid making the flags into a 'long. */ #define MNT_UPDATE 0x1000 /* not a real mount, just an update */ /* * Flags for various system call interfaces. * * These aren't used for anything in the system and are present only * for source code compatibility reasons. */ #define MNT_WAIT 1 #define MNT_NOWAIT 2 #if defined(KERNEL) && !defined(SUPERVISOR) struct mount mount[NMOUNT]; #endif