f6aac1c3b5
Moving include/sys NetBSD headers to /sys/sys Moving include/arch/*/ NetBSD headers to /sys/arch/*/include Change-Id: Ia1a45d4e83ab806c84093ec2b61bdbea9bed65a0
281 lines
9.3 KiB
C
281 lines
9.3 KiB
C
/* $NetBSD: fstypes.h,v 1.30 2011/11/18 21:17:45 christos Exp $ */
|
|
|
|
/*
|
|
* Copyright (c) 1989, 1991, 1993
|
|
* The Regents of the University of California. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* 3. Neither the name of the University nor the names of its contributors
|
|
* may be used to endorse or promote products derived from this software
|
|
* without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
* SUCH DAMAGE.
|
|
*
|
|
* @(#)mount.h 8.21 (Berkeley) 5/20/95
|
|
*/
|
|
|
|
#ifndef _SYS_FSTYPES_H_
|
|
#define _SYS_FSTYPES_H_
|
|
|
|
typedef struct { int32_t __fsid_val[2]; } fsid_t; /* file system id type */
|
|
|
|
#if defined(_KERNEL)
|
|
/*
|
|
* File identifier.
|
|
* These are unique per filesystem on a single machine.
|
|
*/
|
|
struct fid {
|
|
unsigned short fid_len; /* length of data in bytes */
|
|
unsigned short fid_reserved; /* compat: historic align */
|
|
char fid_data[0]; /* data (variable length) */
|
|
};
|
|
|
|
/*
|
|
* Generic file handle
|
|
*/
|
|
struct fhandle {
|
|
fsid_t fh_fsid; /* File system id of mount point */
|
|
struct fid fh_fid; /* File sys specific id */
|
|
};
|
|
typedef struct fhandle fhandle_t;
|
|
|
|
/*
|
|
* FHANDLE_SIZE_MAX: arbitrary value to prevent unreasonable allocation.
|
|
*
|
|
* FHANDLE_SIZE_MIN: chosen for compatibility. smaller handles are zero-padded.
|
|
*/
|
|
|
|
#define FHANDLE_SIZE_COMPAT 28
|
|
#define FHANDLE_SIZE_MAX 1024
|
|
#define FHANDLE_SIZE_MIN FHANDLE_SIZE_COMPAT
|
|
|
|
#define FHANDLE_FSID(fh) (&(fh)->fh_fsid)
|
|
#define FHANDLE_FILEID(fh) (&(fh)->fh_fid)
|
|
#define FHANDLE_SIZE_FROM_FILEID_SIZE(fidsize) \
|
|
MAX(FHANDLE_SIZE_MIN, (offsetof(fhandle_t, fh_fid) + (fidsize)))
|
|
#define FHANDLE_SIZE(fh) \
|
|
FHANDLE_SIZE_FROM_FILEID_SIZE(FHANDLE_FILEID(fh)->fid_len)
|
|
#endif /* defined(_KERNEL) */
|
|
|
|
/*
|
|
* Mount flags. XXX BEWARE: these are not in numerical order!
|
|
*
|
|
* Unmount uses MNT_FORCE flag.
|
|
*
|
|
* Note that all mount flags are listed here. if you need to add one, take
|
|
* one of the __MNT_UNUSED flags.
|
|
*/
|
|
|
|
#define __MNT_UNUSED1 0x00200000
|
|
#define __MNT_UNUSED2 0x00800000
|
|
|
|
#define MNT_RDONLY 0x00000001 /* read only filesystem */
|
|
#define MNT_SYNCHRONOUS 0x00000002 /* file system written synchronously */
|
|
#define MNT_NOEXEC 0x00000004 /* can't exec from filesystem */
|
|
#define MNT_NOSUID 0x00000008 /* don't honor setuid bits on fs */
|
|
#define MNT_NODEV 0x00000010 /* don't interpret special files */
|
|
#define MNT_UNION 0x00000020 /* union with underlying filesystem */
|
|
#define MNT_ASYNC 0x00000040 /* file system written asynchronously */
|
|
#define MNT_NOCOREDUMP 0x00008000 /* don't write core dumps to this FS */
|
|
#define MNT_RELATIME 0x00020000 /* only update access time if mod/ch */
|
|
#define MNT_IGNORE 0x00100000 /* don't show entry in df */
|
|
#define MNT_EXTATTR 0x01000000 /* enable extended attributes */
|
|
#define MNT_LOG 0x02000000 /* Use logging */
|
|
#define MNT_NOATIME 0x04000000 /* Never update access times in fs */
|
|
#define MNT_SYMPERM 0x20000000 /* recognize symlink permission */
|
|
#define MNT_NODEVMTIME 0x40000000 /* Never update mod times for devs */
|
|
#define MNT_SOFTDEP 0x80000000 /* Use soft dependencies */
|
|
|
|
#define __MNT_BASIC_FLAGS \
|
|
{ MNT_ASYNC, 0, "asynchronous" }, \
|
|
{ MNT_EXTATTR, 0, "extattr" }, \
|
|
{ MNT_IGNORE, 0, "hidden" }, \
|
|
{ MNT_LOG, 0, "log" }, \
|
|
{ MNT_NOATIME, 0, "noatime" }, \
|
|
{ MNT_NOCOREDUMP, 0, "nocoredump" }, \
|
|
{ MNT_NODEV, 0, "nodev" }, \
|
|
{ MNT_NODEVMTIME, 0, "nodevmtime" }, \
|
|
{ MNT_NOEXEC, 0, "noexec" }, \
|
|
{ MNT_NOSUID, 0, "nosuid" }, \
|
|
{ MNT_RDONLY, 0, "read-only" }, \
|
|
{ MNT_RELATIME, 0, "relatime" }, \
|
|
{ MNT_SOFTDEP, 0, "soft dependencies" }, \
|
|
{ MNT_SYMPERM, 0, "symperm" }, \
|
|
{ MNT_SYNCHRONOUS, 0, "synchronous" }, \
|
|
{ MNT_UNION, 0, "union" }, \
|
|
|
|
#define MNT_BASIC_FLAGS (MNT_ASYNC | MNT_EXTATTR | MNT_LOG | MNT_NOATIME | \
|
|
MNT_NOCOREDUMP | MNT_NODEV | MNT_NODEVMTIME | MNT_NOEXEC | MNT_NOSUID | \
|
|
MNT_RDONLY | MNT_RELATIME | MNT_SOFTDEP | MNT_SYMPERM | \
|
|
MNT_SYNCHRONOUS | MNT_UNION)
|
|
/*
|
|
* exported mount flags.
|
|
*/
|
|
#define MNT_EXRDONLY 0x00000080 /* exported read only */
|
|
#define MNT_EXPORTED 0x00000100 /* file system is exported */
|
|
#define MNT_DEFEXPORTED 0x00000200 /* exported to the world */
|
|
#define MNT_EXPORTANON 0x00000400 /* use anon uid mapping for everyone */
|
|
#define MNT_EXKERB 0x00000800 /* exported with Kerberos uid mapping */
|
|
#define MNT_EXNORESPORT 0x08000000 /* don't enforce reserved ports (NFS) */
|
|
#define MNT_EXPUBLIC 0x10000000 /* public export (WebNFS) */
|
|
|
|
#define __MNT_EXPORTED_FLAGS \
|
|
{ MNT_EXRDONLY, 1, "exported read-only" }, \
|
|
{ MNT_EXPORTED, 0, "NFS exported" }, \
|
|
{ MNT_DEFEXPORTED, 1, "exported to the world" }, \
|
|
{ MNT_EXPORTANON, 1, "anon uid mapping" }, \
|
|
{ MNT_EXKERB, 1, "kerberos uid mapping" }, \
|
|
{ MNT_EXNORESPORT, 0, "non-reserved ports" }, \
|
|
{ MNT_EXPUBLIC, 0, "WebNFS exports" },
|
|
|
|
/*
|
|
* Flags set by internal operations.
|
|
*/
|
|
#define MNT_LOCAL 0x00001000 /* filesystem is stored locally */
|
|
#define MNT_QUOTA 0x00002000 /* quotas are enabled on filesystem */
|
|
#define MNT_ROOTFS 0x00004000 /* identifies the root filesystem */
|
|
|
|
#define __MNT_INTERNAL_FLAGS \
|
|
{ MNT_LOCAL, 0, "local" }, \
|
|
{ MNT_QUOTA, 0, "with quotas" }, \
|
|
{ MNT_ROOTFS, 1, "root file system" },
|
|
|
|
/*
|
|
* Mask of flags that are visible to statvfs()
|
|
*/
|
|
#define MNT_VISFLAGMASK ( \
|
|
MNT_RDONLY | \
|
|
MNT_SYNCHRONOUS | \
|
|
MNT_NOEXEC | \
|
|
MNT_NOSUID | \
|
|
MNT_NODEV | \
|
|
MNT_UNION | \
|
|
MNT_ASYNC | \
|
|
MNT_NOCOREDUMP | \
|
|
MNT_IGNORE | \
|
|
MNT_NOATIME | \
|
|
MNT_SYMPERM | \
|
|
MNT_NODEVMTIME | \
|
|
MNT_SOFTDEP | \
|
|
MNT_EXRDONLY | \
|
|
MNT_EXPORTED | \
|
|
MNT_DEFEXPORTED | \
|
|
MNT_EXPORTANON | \
|
|
MNT_EXKERB | \
|
|
MNT_EXNORESPORT | \
|
|
MNT_EXPUBLIC | \
|
|
MNT_LOCAL | \
|
|
MNT_QUOTA | \
|
|
MNT_ROOTFS | \
|
|
MNT_LOG | \
|
|
MNT_EXTATTR)
|
|
|
|
/*
|
|
* External filesystem control flags.
|
|
*/
|
|
#define MNT_UPDATE 0x00010000 /* not a real mount, just an update */
|
|
#define MNT_RELOAD 0x00040000 /* reload filesystem data */
|
|
#define MNT_FORCE 0x00080000 /* force unmount or readonly change */
|
|
#define MNT_GETARGS 0x00400000 /* retrieve file system specific args */
|
|
|
|
#define MNT_OP_FLAGS (MNT_UPDATE|MNT_RELOAD|MNT_FORCE|MNT_GETARGS)
|
|
|
|
#define __MNT_EXTERNAL_FLAGS \
|
|
{ MNT_UPDATE, 1, "being updated" }, \
|
|
{ MNT_RELOAD, 1, "reload filesystem data" }, \
|
|
{ MNT_FORCE, 1, "force unmount or readonly change" }, \
|
|
{ MNT_GETARGS, 1, "retrieve mount arguments" },
|
|
|
|
/*
|
|
* Internal filesystem control flags.
|
|
* These are set in struct mount mnt_iflag.
|
|
*
|
|
* IMNT_UNMOUNT locks the mount entry so that name lookup cannot proceed
|
|
* past the mount point. This keeps the subtree stable during mounts
|
|
* and unmounts.
|
|
*/
|
|
#define IMNT_GONE 0x00000001 /* filesystem is gone.. */
|
|
#define IMNT_UNMOUNT 0x00000002 /* unmount in progress */
|
|
#define IMNT_WANTRDWR 0x00000004 /* upgrade to read/write requested */
|
|
#define IMNT_DTYPE 0x00000040 /* returns d_type fields */
|
|
#define IMNT_HAS_TRANS 0x00000080 /* supports transactions */
|
|
#define IMNT_MPSAFE 0x00000100 /* file system code MP safe */
|
|
#define IMNT_CAN_RWTORO 0x00000200 /* can downgrade fs to from rw to r/o */
|
|
|
|
#define __MNT_FLAGS \
|
|
__MNT_BASIC_FLAGS \
|
|
__MNT_EXPORTED_FLAGS \
|
|
__MNT_INTERNAL_FLAGS \
|
|
__MNT_EXTERNAL_FLAGS
|
|
|
|
#define __MNT_FLAG_BITS \
|
|
"\20" \
|
|
"\40MNT_SOFTDEP" \
|
|
"\37MNT_NODEVMTIME" \
|
|
"\36MNT_SYMPERM" \
|
|
"\35MNT_EXPUBLIC" \
|
|
"\34MNT_EXNORESPORT" \
|
|
"\33MNT_NOATIME" \
|
|
"\32MNT_LOG" \
|
|
"\31MNT_EXTATTR" \
|
|
"\30MNT_UNUSED" \
|
|
"\27MNT_GETARGS" \
|
|
"\26MNT_UNUSED" \
|
|
"\25MNT_IGNORE" \
|
|
"\24MNT_FORCE" \
|
|
"\23MNT_RELOAD" \
|
|
"\22MNT_RELATIME" \
|
|
"\21MNT_UPDATE" \
|
|
"\20MNT_NOCOREDUMP" \
|
|
"\17MNT_ROOTFS" \
|
|
"\16MNT_QUOTA" \
|
|
"\15MNT_LOCAL" \
|
|
"\14MNT_EXKERB" \
|
|
"\13MNT_EXPORTANON" \
|
|
"\12MNT_DEFEXPORTED" \
|
|
"\11MNT_EXPORTED" \
|
|
"\10MNT_EXRDONLY" \
|
|
"\07MNT_ASYNC" \
|
|
"\06MNT_UNION" \
|
|
"\05MNT_NODEV" \
|
|
"\04MNT_NOSUID" \
|
|
"\03MNT_NOEXEC" \
|
|
"\02MNT_SYNCHRONOUS" \
|
|
"\01MNT_RDONLY"
|
|
|
|
#define __IMNT_FLAG_BITS \
|
|
"\20" \
|
|
"\12IMNT_CAN_RWTORO" \
|
|
"\11IMNT_MPSAFE" \
|
|
"\10IMNT_HAS_TRANS" \
|
|
"\07IMNT_DTYPE" \
|
|
"\03IMNT_WANTRDWR" \
|
|
"\02IMNT_UNMOUNT" \
|
|
"\01IMNT_GONE"
|
|
|
|
/*
|
|
* Flags for various system call interfaces.
|
|
*
|
|
* waitfor flags to vfs_sync() and getvfsstat()
|
|
*/
|
|
#define MNT_WAIT 1 /* synchronously wait for I/O to complete */
|
|
#define MNT_NOWAIT 2 /* start all I/O, but do not wait for it */
|
|
#define MNT_LAZY 3 /* push data not written by filesystem syncer */
|
|
#endif /* _SYS_FSTYPES_H_ */
|