[BACK]Return to fstypes.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / sys

Annotation of src/sys/sys/fstypes.h, Revision 1.33.2.2

1.33.2.2! pgoyette    1: /*     $NetBSD: fstypes.h,v 1.35 2017/03/01 10:44:47 hannken Exp $     */
1.1       christos    2:
                      3: /*
                      4:  * Copyright (c) 1989, 1991, 1993
                      5:  *     The Regents of the University of California.  All rights reserved.
                      6:  *
                      7:  * Redistribution and use in source and binary forms, with or without
                      8:  * modification, are permitted provided that the following conditions
                      9:  * are met:
                     10:  * 1. Redistributions of source code must retain the above copyright
                     11:  *    notice, this list of conditions and the following disclaimer.
                     12:  * 2. Redistributions in binary form must reproduce the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer in the
                     14:  *    documentation and/or other materials provided with the distribution.
                     15:  * 3. Neither the name of the University nor the names of its contributors
                     16:  *    may be used to endorse or promote products derived from this software
                     17:  *    without specific prior written permission.
                     18:  *
                     19:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     20:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     21:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     22:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     23:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     24:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     25:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     26:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     27:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     28:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     29:  * SUCH DAMAGE.
                     30:  *
                     31:  *     @(#)mount.h     8.21 (Berkeley) 5/20/95
                     32:  */
                     33:
                     34: #ifndef _SYS_FSTYPES_H_
1.25      simonb     35: #define        _SYS_FSTYPES_H_
1.1       christos   36:
                     37: typedef struct { int32_t __fsid_val[2]; } fsid_t; /* file system id type */
                     38:
1.13      martin     39: #if defined(_KERNEL)
1.1       christos   40: /*
                     41:  * File identifier.
                     42:  * These are unique per filesystem on a single machine.
                     43:  */
                     44: struct fid {
                     45:        unsigned short  fid_len;                /* length of data in bytes */
1.20      pooka      46:        unsigned short  fid_reserved;           /* compat: historic align */
1.26      gmcgarry   47:        char            fid_data[0];            /* data (variable length) */
1.1       christos   48: };
                     49:
                     50: /*
                     51:  * Generic file handle
                     52:  */
                     53: struct fhandle {
                     54:        fsid_t  fh_fsid;        /* File system id of mount point */
                     55:        struct  fid fh_fid;     /* File sys specific id */
                     56: };
                     57: typedef struct fhandle fhandle_t;
                     58:
1.12      yamt       59: /*
                     60:  * FHANDLE_SIZE_MAX: arbitrary value to prevent unreasonable allocation.
                     61:  *
                     62:  * FHANDLE_SIZE_MIN: chosen for compatibility.  smaller handles are zero-padded.
                     63:  */
                     64:
1.14      yamt       65: #define        FHANDLE_SIZE_COMPAT     28
1.12      yamt       66: #define        FHANDLE_SIZE_MAX        1024
1.14      yamt       67: #define        FHANDLE_SIZE_MIN        FHANDLE_SIZE_COMPAT
1.12      yamt       68:
1.10      yamt       69: #define        FHANDLE_FSID(fh)        (&(fh)->fh_fsid)
                     70: #define        FHANDLE_FILEID(fh)      (&(fh)->fh_fid)
1.12      yamt       71: #define        FHANDLE_SIZE_FROM_FILEID_SIZE(fidsize) \
                     72:        MAX(FHANDLE_SIZE_MIN, (offsetof(fhandle_t, fh_fid) + (fidsize)))
                     73: #define        FHANDLE_SIZE(fh) \
                     74:        FHANDLE_SIZE_FROM_FILEID_SIZE(FHANDLE_FILEID(fh)->fid_len)
1.10      yamt       75: #endif /* defined(_KERNEL) */
                     76:
1.1       christos   77: /*
                     78:  * Mount flags.  XXX BEWARE: these are not in numerical order!
                     79:  *
                     80:  * Unmount uses MNT_FORCE flag.
                     81:  *
                     82:  * Note that all mount flags are listed here.  if you need to add one, take
                     83:  * one of the __MNT_UNUSED flags.
                     84:  */
                     85:
1.30      christos   86: #define        __MNT_UNUSED1   0x00200000
1.1       christos   87:
                     88: #define        MNT_RDONLY      0x00000001      /* read only filesystem */
                     89: #define        MNT_SYNCHRONOUS 0x00000002      /* file system written synchronously */
                     90: #define        MNT_NOEXEC      0x00000004      /* can't exec from filesystem */
                     91: #define        MNT_NOSUID      0x00000008      /* don't honor setuid bits on fs */
                     92: #define        MNT_NODEV       0x00000010      /* don't interpret special files */
                     93: #define        MNT_UNION       0x00000020      /* union with underlying filesystem */
                     94: #define        MNT_ASYNC       0x00000040      /* file system written asynchronously */
                     95: #define        MNT_NOCOREDUMP  0x00008000      /* don't write core dumps to this FS */
1.30      christos   96: #define        MNT_RELATIME    0x00020000      /* only update access time if mod/ch */
1.25      simonb     97: #define        MNT_IGNORE      0x00100000      /* don't show entry in df */
1.31      drochner   98: #define        MNT_DISCARD     0x00800000      /* use DISCARD/TRIM if supported */
1.29      manu       99: #define        MNT_EXTATTR     0x01000000      /* enable extended attributes */
1.24      simonb    100: #define        MNT_LOG         0x02000000      /* Use logging */
1.25      simonb    101: #define        MNT_NOATIME     0x04000000      /* Never update access times in fs */
                    102: #define        MNT_SYMPERM     0x20000000      /* recognize symlink permission */
                    103: #define        MNT_NODEVMTIME  0x40000000      /* Never update mod times for devs */
                    104: #define        MNT_SOFTDEP     0x80000000      /* Use soft dependencies */
1.1       christos  105:
1.25      simonb    106: #define        __MNT_BASIC_FLAGS \
1.1       christos  107:        { MNT_ASYNC,            0,      "asynchronous" }, \
1.31      drochner  108:        { MNT_DISCARD,          0,      "discard" }, \
1.30      christos  109:        { MNT_EXTATTR,          0,      "extattr" }, \
1.1       christos  110:        { MNT_IGNORE,           0,      "hidden" }, \
1.30      christos  111:        { MNT_LOG,              0,      "log" }, \
1.1       christos  112:        { MNT_NOATIME,          0,      "noatime" }, \
1.30      christos  113:        { MNT_NOCOREDUMP,       0,      "nocoredump" }, \
                    114:        { MNT_NODEV,            0,      "nodev" }, \
1.1       christos  115:        { MNT_NODEVMTIME,       0,      "nodevmtime" }, \
1.30      christos  116:        { MNT_NOEXEC,           0,      "noexec" }, \
                    117:        { MNT_NOSUID,           0,      "nosuid" }, \
                    118:        { MNT_RDONLY,           0,      "read-only" }, \
                    119:        { MNT_RELATIME,         0,      "relatime" }, \
1.24      simonb    120:        { MNT_SOFTDEP,          0,      "soft dependencies" }, \
1.30      christos  121:        { MNT_SYMPERM,          0,      "symperm" }, \
                    122:        { MNT_SYNCHRONOUS,      0,      "synchronous" }, \
                    123:        { MNT_UNION,            0,      "union" }, \
1.1       christos  124:
1.31      drochner  125: #define MNT_BASIC_FLAGS (MNT_ASYNC | MNT_DISCARD | MNT_EXTATTR | MNT_LOG | \
                    126:     MNT_NOATIME | MNT_NOCOREDUMP | MNT_NODEV | MNT_NODEVMTIME | MNT_NOEXEC | \
                    127:     MNT_NOSUID | MNT_RDONLY | MNT_RELATIME | MNT_SOFTDEP | MNT_SYMPERM | \
1.30      christos  128:     MNT_SYNCHRONOUS | MNT_UNION)
1.1       christos  129: /*
                    130:  * exported mount flags.
                    131:  */
                    132: #define        MNT_EXRDONLY    0x00000080      /* exported read only */
                    133: #define        MNT_EXPORTED    0x00000100      /* file system is exported */
                    134: #define        MNT_DEFEXPORTED 0x00000200      /* exported to the world */
                    135: #define        MNT_EXPORTANON  0x00000400      /* use anon uid mapping for everyone */
                    136: #define        MNT_EXKERB      0x00000800      /* exported with Kerberos uid mapping */
1.25      simonb    137: #define        MNT_EXNORESPORT 0x08000000      /* don't enforce reserved ports (NFS) */
                    138: #define        MNT_EXPUBLIC    0x10000000      /* public export (WebNFS) */
1.1       christos  139:
1.25      simonb    140: #define        __MNT_EXPORTED_FLAGS \
1.1       christos  141:        { MNT_EXRDONLY,         1,      "exported read-only" }, \
                    142:        { MNT_EXPORTED,         0,      "NFS exported" }, \
                    143:        { MNT_DEFEXPORTED,      1,      "exported to the world" }, \
                    144:        { MNT_EXPORTANON,       1,      "anon uid mapping" }, \
                    145:        { MNT_EXKERB,           1,      "kerberos uid mapping" }, \
                    146:        { MNT_EXNORESPORT,      0,      "non-reserved ports" }, \
                    147:        { MNT_EXPUBLIC,         0,      "WebNFS exports" },
                    148:
                    149: /*
                    150:  * Flags set by internal operations.
                    151:  */
                    152: #define        MNT_LOCAL       0x00001000      /* filesystem is stored locally */
                    153: #define        MNT_QUOTA       0x00002000      /* quotas are enabled on filesystem */
                    154: #define        MNT_ROOTFS      0x00004000      /* identifies the root filesystem */
                    155:
1.25      simonb    156: #define        __MNT_INTERNAL_FLAGS \
1.1       christos  157:        { MNT_LOCAL,            0,      "local" }, \
                    158:        { MNT_QUOTA,            0,      "with quotas" }, \
                    159:        { MNT_ROOTFS,           1,      "root file system" },
                    160:
                    161: /*
                    162:  * Mask of flags that are visible to statvfs()
                    163:  */
1.5       christos  164: #define        MNT_VISFLAGMASK ( \
                    165:      MNT_RDONLY | \
                    166:      MNT_SYNCHRONOUS | \
                    167:      MNT_NOEXEC | \
                    168:      MNT_NOSUID | \
                    169:      MNT_NODEV | \
                    170:      MNT_UNION | \
                    171:      MNT_ASYNC | \
                    172:      MNT_NOCOREDUMP | \
                    173:      MNT_IGNORE | \
1.32      drochner  174:      MNT_DISCARD | \
1.5       christos  175:      MNT_NOATIME | \
                    176:      MNT_SYMPERM | \
                    177:      MNT_NODEVMTIME | \
                    178:      MNT_SOFTDEP | \
                    179:      MNT_EXRDONLY | \
                    180:      MNT_EXPORTED | \
                    181:      MNT_DEFEXPORTED | \
                    182:      MNT_EXPORTANON | \
                    183:      MNT_EXKERB | \
                    184:      MNT_EXNORESPORT | \
                    185:      MNT_EXPUBLIC | \
                    186:      MNT_LOCAL | \
                    187:      MNT_QUOTA | \
1.24      simonb    188:      MNT_ROOTFS | \
1.29      manu      189:      MNT_LOG | \
                    190:      MNT_EXTATTR)
1.1       christos  191:
                    192: /*
                    193:  * External filesystem control flags.
                    194:  */
                    195: #define        MNT_UPDATE      0x00010000      /* not a real mount, just an update */
                    196: #define        MNT_RELOAD      0x00040000      /* reload filesystem data */
                    197: #define        MNT_FORCE       0x00080000      /* force unmount or readonly change */
                    198: #define        MNT_GETARGS     0x00400000      /* retrieve file system specific args */
                    199:
1.17      yamt      200: #define        MNT_OP_FLAGS    (MNT_UPDATE|MNT_RELOAD|MNT_FORCE|MNT_GETARGS)
                    201:
1.25      simonb    202: #define        __MNT_EXTERNAL_FLAGS \
1.1       christos  203:        { MNT_UPDATE,           1,      "being updated" }, \
                    204:        { MNT_RELOAD,           1,      "reload filesystem data" }, \
                    205:        { MNT_FORCE,            1,      "force unmount or readonly change" }, \
                    206:        { MNT_GETARGS,          1,      "retrieve mount arguments" },
                    207:
                    208: /*
                    209:  * Internal filesystem control flags.
                    210:  * These are set in struct mount mnt_iflag.
                    211:  *
                    212:  * IMNT_UNMOUNT locks the mount entry so that name lookup cannot proceed
                    213:  * past the mount point.  This keeps the subtree stable during mounts
                    214:  * and unmounts.
                    215:  */
                    216: #define        IMNT_GONE       0x00000001      /* filesystem is gone.. */
                    217: #define        IMNT_UNMOUNT    0x00000002      /* unmount in progress */
                    218: #define        IMNT_WANTRDWR   0x00000004      /* upgrade to read/write requested */
1.33.2.2! pgoyette  219: #define        IMNT_WANTRDONLY 0x00000008      /* upgrade to readonly requested */
1.3       mycroft   220: #define        IMNT_DTYPE      0x00000040      /* returns d_type fields */
1.18      hannken   221: #define        IMNT_HAS_TRANS  0x00000080      /* supports transactions */
1.21      ad        222: #define        IMNT_MPSAFE     0x00000100      /* file system code MP safe */
1.28      pooka     223: #define        IMNT_CAN_RWTORO 0x00000200      /* can downgrade fs to from rw to r/o */
1.33      hannken   224: #define        IMNT_ONWORKLIST 0x00000400      /* on syncer worklist */
1.1       christos  225:
1.25      simonb    226: #define        __MNT_FLAGS \
1.1       christos  227:        __MNT_BASIC_FLAGS \
                    228:        __MNT_EXPORTED_FLAGS \
                    229:        __MNT_INTERNAL_FLAGS \
                    230:        __MNT_EXTERNAL_FLAGS
                    231:
1.25      simonb    232: #define        __MNT_FLAG_BITS \
1.1       christos  233:        "\20" \
                    234:        "\40MNT_SOFTDEP" \
                    235:        "\37MNT_NODEVMTIME" \
                    236:        "\36MNT_SYMPERM" \
                    237:        "\35MNT_EXPUBLIC" \
                    238:        "\34MNT_EXNORESPORT" \
                    239:        "\33MNT_NOATIME" \
1.24      simonb    240:        "\32MNT_LOG" \
1.29      manu      241:        "\31MNT_EXTATTR" \
1.31      drochner  242:        "\30MNT_DISCARD" \
1.1       christos  243:        "\27MNT_GETARGS" \
1.8       chs       244:        "\26MNT_UNUSED" \
1.1       christos  245:        "\25MNT_IGNORE" \
                    246:        "\24MNT_FORCE" \
                    247:        "\23MNT_RELOAD" \
1.30      christos  248:        "\22MNT_RELATIME" \
1.1       christos  249:        "\21MNT_UPDATE" \
                    250:        "\20MNT_NOCOREDUMP" \
                    251:        "\17MNT_ROOTFS" \
                    252:        "\16MNT_QUOTA" \
                    253:        "\15MNT_LOCAL" \
                    254:        "\14MNT_EXKERB" \
                    255:        "\13MNT_EXPORTANON" \
                    256:        "\12MNT_DEFEXPORTED" \
                    257:        "\11MNT_EXPORTED" \
                    258:        "\10MNT_EXRDONLY" \
                    259:        "\07MNT_ASYNC" \
                    260:        "\06MNT_UNION" \
                    261:        "\05MNT_NODEV" \
                    262:        "\04MNT_NOSUID" \
                    263:        "\03MNT_NOEXEC" \
                    264:        "\02MNT_SYNCHRONOUS" \
                    265:        "\01MNT_RDONLY"
                    266:
1.25      simonb    267: #define        __IMNT_FLAG_BITS \
1.1       christos  268:        "\20" \
1.33      hannken   269:        "\13IMNT_ONWORKLIST" \
1.28      pooka     270:        "\12IMNT_CAN_RWTORO" \
1.33.2.1  pgoyette  271:        "\11IMNT_MPSAFE" \
1.18      hannken   272:        "\10IMNT_HAS_TRANS" \
1.3       mycroft   273:        "\07IMNT_DTYPE" \
1.33.2.2! pgoyette  274:        "\04IMNT_WANTRDONLY" \
1.1       christos  275:        "\03IMNT_WANTRDWR" \
                    276:        "\02IMNT_UNMOUNT" \
                    277:        "\01IMNT_GONE"
                    278:
                    279: /*
                    280:  * Flags for various system call interfaces.
                    281:  *
                    282:  * waitfor flags to vfs_sync() and getvfsstat()
                    283:  */
1.25      simonb    284: #define        MNT_WAIT        1       /* synchronously wait for I/O to complete */
                    285: #define        MNT_NOWAIT      2       /* start all I/O, but do not wait for it */
                    286: #define        MNT_LAZY        3       /* push data not written by filesystem syncer */
1.1       christos  287: #endif /* _SYS_FSTYPES_H_ */

CVSweb <webmaster@jp.NetBSD.org>