The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/sys/fstypes.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: fstypes.h,v 1.41 2021/09/18 03:05:20 christos Exp $    */
    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_
   35 #define _SYS_FSTYPES_H_
   36 
   37 typedef struct { int32_t __fsid_val[2]; } fsid_t; /* file system id type */
   38 
   39 #if defined(_KERNEL)
   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 */
   46         unsigned short  fid_reserved;           /* compat: historic align */
   47         char            fid_data[0];            /* data (variable length) */
   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 
   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 
   65 #define FHANDLE_SIZE_COMPAT     28
   66 #define FHANDLE_SIZE_MAX        1024
   67 #define FHANDLE_SIZE_MIN        FHANDLE_SIZE_COMPAT
   68 
   69 #define FHANDLE_FSID(fh)        (&(fh)->fh_fsid)
   70 #define FHANDLE_FILEID(fh)      (&(fh)->fh_fid)
   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)
   75 #endif /* defined(_KERNEL) */
   76 
   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 
   86 
   87 #define MNT_RDONLY      0x00000001      /* read only filesystem */
   88 #define MNT_SYNCHRONOUS 0x00000002      /* file system written synchronously */
   89 #define MNT_NOEXEC      0x00000004      /* can't exec from filesystem */
   90 #define MNT_NOSUID      0x00000008      /* don't honor setuid bits on fs */
   91 #define MNT_NODEV       0x00000010      /* don't interpret special files */
   92 #define MNT_UNION       0x00000020      /* union with underlying filesystem */
   93 #define MNT_ASYNC       0x00000040      /* file system written asynchronously */
   94 #define MNT_NOCOREDUMP  0x00008000      /* don't write core dumps to this FS */
   95 #define MNT_RELATIME    0x00020000      /* only update access time if mod/ch */
   96 #define MNT_IGNORE      0x00100000      /* don't show entry in df */
   97 #define MNT_NFS4ACLS    0x00200000      /* uses NFS4 Access Control Lists */
   98 #define MNT_DISCARD     0x00800000      /* use DISCARD/TRIM if supported */
   99 #define MNT_EXTATTR     0x01000000      /* enable extended attributes */
  100 #define MNT_LOG         0x02000000      /* Use logging */
  101 #define MNT_NOATIME     0x04000000      /* Never update access times in fs */
  102 #define MNT_AUTOMOUNTED 0x10000000      /* mounted by automountd(8) */
  103 #define MNT_SYMPERM     0x20000000      /* recognize symlink permission */
  104 #define MNT_NODEVMTIME  0x40000000      /* Never update mod times for devs */
  105 #define MNT_SOFTDEP     0x80000000      /* Use soft dependencies */
  106 #define MNT_POSIX1EACLS 0x00000800      /* shared with EXKERB */
  107 #define MNT_ACLS        MNT_POSIX1EACLS /* synonym */
  108 
  109 #define __MNT_BASIC_FLAGS \
  110         { MNT_ASYNC,            0,      "asynchronous" }, \
  111         { MNT_AUTOMOUNTED,      0,      "automounted" }, \
  112         { MNT_NFS4ACLS,         0,      "nfs4acls" }, \
  113         { MNT_POSIX1EACLS,      0,      "posix1eacls" }, \
  114         { MNT_DISCARD,          0,      "discard" }, \
  115         { MNT_EXTATTR,          0,      "extattr" }, \
  116         { MNT_IGNORE,           0,      "hidden" }, \
  117         { MNT_LOG,              0,      "log" }, \
  118         { MNT_NOATIME,          0,      "noatime" }, \
  119         { MNT_NOCOREDUMP,       0,      "nocoredump" }, \
  120         { MNT_NODEV,            0,      "nodev" }, \
  121         { MNT_NODEVMTIME,       0,      "nodevmtime" }, \
  122         { MNT_NOEXEC,           0,      "noexec" }, \
  123         { MNT_NOSUID,           0,      "nosuid" }, \
  124         { MNT_RDONLY,           0,      "read-only" }, \
  125         { MNT_RELATIME,         0,      "relatime" }, \
  126         { MNT_SOFTDEP,          0,      "soft dependencies" }, \
  127         { MNT_SYMPERM,          0,      "symperm" }, \
  128         { MNT_SYNCHRONOUS,      0,      "synchronous" }, \
  129         { MNT_UNION,            0,      "union" }, \
  130 
  131 #define MNT_BASIC_FLAGS (MNT_ASYNC | MNT_AUTOMOUNTED | MNT_DISCARD | \
  132     MNT_EXTATTR | MNT_LOG | MNT_NOATIME | MNT_NOCOREDUMP | MNT_NODEV | \
  133     MNT_NODEVMTIME | MNT_NOEXEC | MNT_NOSUID | MNT_RDONLY | MNT_RELATIME | \
  134     MNT_SOFTDEP | MNT_SYMPERM | MNT_SYNCHRONOUS | MNT_UNION | MNT_NFS4ACLS | \
  135     MNT_POSIX1EACLS)
  136 /*
  137  * exported mount flags.
  138  */
  139 #define MNT_EXRDONLY    0x00000080      /* exported read only */
  140 #define MNT_EXPORTED    0x00000100      /* file system is exported */
  141 #define MNT_DEFEXPORTED 0x00000200      /* exported to the world */
  142 #define MNT_EXPORTANON  0x00000400      /* use anon uid mapping for everyone */
  143 #define MNT_EXKERB      0x00000800      /* exported with Kerberos uid mapping */
  144 #define MNT_EXNORESPORT 0x08000000      /* don't enforce reserved ports (NFS) */
  145 #define MNT_EXPUBLIC    0x10000000      /* public export (WebNFS) */
  146 
  147 #define __MNT_EXPORTED_FLAGS \
  148         { MNT_EXRDONLY,         1,      "exported read-only" }, \
  149         { MNT_EXPORTED,         0,      "NFS exported" }, \
  150         { MNT_DEFEXPORTED,      1,      "exported to the world" }, \
  151         { MNT_EXPORTANON,       1,      "anon uid mapping" }, \
  152         { MNT_EXKERB,           1,      "kerberos uid mapping/posix1e ACLS" }, \
  153         { MNT_EXNORESPORT,      0,      "non-reserved ports" }, \
  154         { MNT_EXPUBLIC,         0,      "WebNFS exports" },
  155 
  156 /*
  157  * Flags set by internal operations.
  158  */
  159 #define MNT_LOCAL       0x00001000      /* filesystem is stored locally */
  160 #define MNT_QUOTA       0x00002000      /* quotas are enabled on filesystem */
  161 #define MNT_ROOTFS      0x00004000      /* identifies the root filesystem */
  162 
  163 #define __MNT_INTERNAL_FLAGS \
  164         { MNT_LOCAL,            0,      "local" }, \
  165         { MNT_QUOTA,            0,      "with quotas" }, \
  166         { MNT_ROOTFS,           1,      "root file system" },
  167 
  168 /*
  169  * Mask of flags that are visible to statvfs()
  170  */
  171 #define MNT_VISFLAGMASK ( \
  172      MNT_RDONLY | \
  173      MNT_SYNCHRONOUS | \
  174      MNT_NOEXEC | \
  175      MNT_NOSUID | \
  176      MNT_NODEV | \
  177      MNT_UNION | \
  178      MNT_NFS4ACLS | \
  179      MNT_ASYNC | \
  180      MNT_NOCOREDUMP | \
  181      MNT_IGNORE | \
  182      MNT_DISCARD | \
  183      MNT_NOATIME | \
  184      MNT_SYMPERM | \
  185      MNT_NODEVMTIME | \
  186      MNT_SOFTDEP | \
  187      MNT_EXRDONLY | \
  188      MNT_EXPORTED | \
  189      MNT_DEFEXPORTED | \
  190      MNT_EXPORTANON | \
  191      MNT_EXKERB | \
  192      MNT_EXNORESPORT | \
  193      MNT_EXPUBLIC | \
  194      MNT_LOCAL | \
  195      MNT_QUOTA | \
  196      MNT_ROOTFS | \
  197      MNT_LOG | \
  198      MNT_POSIX1EACLS | \
  199      MNT_EXTATTR | \
  200      MNT_AUTOMOUNTED)
  201 
  202 /*
  203  * External filesystem control flags.
  204  */
  205 #define MNT_UPDATE      0x00010000      /* not a real mount, just an update */
  206 #define MNT_RELOAD      0x00040000      /* reload filesystem data */
  207 #define MNT_FORCE       0x00080000      /* force unmount or readonly change */
  208 #define MNT_GETARGS     0x00400000      /* retrieve file system specific args */
  209 
  210 #define MNT_OP_FLAGS    (MNT_UPDATE|MNT_RELOAD|MNT_FORCE|MNT_GETARGS)
  211 
  212 #define __MNT_EXTERNAL_FLAGS \
  213         { MNT_UPDATE,           1,      "being updated" }, \
  214         { MNT_RELOAD,           1,      "reload filesystem data" }, \
  215         { MNT_FORCE,            1,      "force unmount or readonly change" }, \
  216         { MNT_GETARGS,          1,      "retrieve mount arguments" },
  217 
  218 /*
  219  * Internal filesystem control flags.
  220  * These are set in struct mount mnt_iflag.
  221  *
  222  * IMNT_UNMOUNT locks the mount entry so that name lookup cannot proceed
  223  * past the mount point.  This keeps the subtree stable during mounts
  224  * and unmounts.
  225  */
  226 #define IMNT_GONE       0x00000001      /* filesystem is gone.. */
  227 #define IMNT_UNMOUNT    0x00000002      /* unmount in progress */
  228 #define IMNT_WANTRDWR   0x00000004      /* upgrade to read/write requested */
  229 #define IMNT_WANTRDONLY 0x00000008      /* upgrade to readonly requested */
  230 #define IMNT_NCLOOKUP   0x00000020      /* can do lookop direct in namecache */
  231 #define IMNT_DTYPE      0x00000040      /* returns d_type fields */
  232 #define IMNT_SHRLOOKUP  0x00000080      /* can do LK_SHARED lookups */
  233 #define IMNT_MPSAFE     0x00000100      /* file system code MP safe */
  234 #define IMNT_CAN_RWTORO 0x00000200      /* can downgrade fs to from rw to r/o */
  235 #define IMNT_ONWORKLIST 0x00000400      /* on syncer worklist */
  236 
  237 #define __MNT_FLAGS \
  238         __MNT_BASIC_FLAGS \
  239         __MNT_EXPORTED_FLAGS \
  240         __MNT_INTERNAL_FLAGS \
  241         __MNT_EXTERNAL_FLAGS
  242 
  243 #define __MNT_FLAG_BITS \
  244         "\2" \
  245         "\40MNT_SOFTDEP" \
  246         "\37MNT_NODEVMTIME" \
  247         "\36MNT_SYMPERM" \
  248         "\35MNT_EXPUBLIC" \
  249         "\34MNT_EXNORESPORT" \
  250         "\33MNT_NOATIME" \
  251         "\32MNT_LOG" \
  252         "\31MNT_EXTATTR" \
  253         "\30MNT_DISCARD" \
  254         "\27MNT_GETARGS" \
  255         "\26MNT_NFS4ACLS" \
  256         "\25MNT_IGNORE" \
  257         "\24MNT_FORCE" \
  258         "\23MNT_RELOAD" \
  259         "\22MNT_RELATIME" \
  260         "\21MNT_UPDATE" \
  261         "\20MNT_NOCOREDUMP" \
  262         "\17MNT_ROOTFS" \
  263         "\16MNT_QUOTA" \
  264         "\15MNT_LOCAL" \
  265         "\14MNT_EXKERB|MNT_POSIX1EACLS" \
  266         "\13MNT_EXPORTANON" \
  267         "\12MNT_DEFEXPORTED" \
  268         "\11MNT_EXPORTED" \
  269         "\10MNT_EXRDONLY" \
  270         "\07MNT_ASYNC" \
  271         "\06MNT_UNION" \
  272         "\05MNT_NODEV" \
  273         "\04MNT_NOSUID" \
  274         "\03MNT_NOEXEC" \
  275         "\02MNT_SYNCHRONOUS" \
  276         "\01MNT_RDONLY"
  277 
  278 #define __IMNT_FLAG_BITS \
  279         "\2" \
  280         "\13IMNT_ONWORKLIST" \
  281         "\12IMNT_CAN_RWTORO" \
  282         "\11IMNT_MPSAFE" \
  283         "\10IMNT_SHRLOOKUP" \
  284         "\07IMNT_DTYPE" \
  285         "\06IMNT_NCLOOKUP" \
  286         "\04IMNT_WANTRDONLY" \
  287         "\03IMNT_WANTRDWR" \
  288         "\02IMNT_UNMOUNT" \
  289         "\01IMNT_GONE"
  290 
  291 /*
  292  * Flags for various system call interfaces.
  293  *
  294  * waitfor flags to vfs_sync() and getvfsstat()
  295  */
  296 #define MNT_WAIT        1       /* synchronously wait for I/O to complete */
  297 #define MNT_NOWAIT      2       /* start all I/O, but do not wait for it */
  298 #define MNT_LAZY        3       /* push data not written by filesystem syncer */
  299 #endif /* _SYS_FSTYPES_H_ */

Cache object: 340a6c9f44943e8d72475c38d4eeed48


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.