- Introduce support for sticky bit.
- Revise VFS-FS protocol and update VFS/MFS/ISOFS accordingly.
- Clean up MFS by removing old, dead code (backwards compatibility is broken by
the new VFS-FS protocol, anyway) and rewrite other parts. Also, make sure all
functions have proper banners and prototypes.
- VFS should always provide a (syntactically) valid path to the FS; no need for
the FS to do sanity checks when leaving/entering mount points.
- Fix several bugs in MFS:
- Several path lookup bugs in MFS.
- A link can be too big for the path buffer.
- A mountpoint can become inaccessible when the creation of a new inode
fails, because the inode already exists and is a mountpoint.
- Introduce support for supplemental groups.
- Add test 46 to test supplemental group functionality (and removed obsolete
suppl. tests from test 2).
- Clean up VFS (not everything is done yet).
- ISOFS now opens device read-only. This makes the -r flag in the mount command
unnecessary (but will still report to be mounted read-write).
- Introduce PipeFS. PipeFS is a new FS that handles all anonymous and
named pipes. However, named pipes still reside on the (M)FS, as they are part
of the file system on disk. To make this work VFS now has a concept of
'mapped' inodes, which causes read, write, truncate and stat requests to be
redirected to the mapped FS, and all other requests to the original FS.
2009-12-20 21:27:14 +01:00
|
|
|
#ifndef __MINIX_VFSIF_H
|
|
|
|
#define __MINIX_VFSIF_H
|
|
|
|
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <limits.h>
|
|
|
|
|
|
|
|
/* VFS/FS request fields */
|
|
|
|
#define REQ_ACTIME m9_l2
|
|
|
|
#define REQ_COUNT m9_l2
|
|
|
|
#define REQ_DEV m9_l5
|
|
|
|
#define REQ_DEV2 m9_l1
|
|
|
|
#define REQ_DIR_INO m9_l3
|
|
|
|
#define REQ_DRIVER_E m9_l2
|
|
|
|
#define REQ_FLAGS m9_s3
|
|
|
|
#define REQ_GID m9_s1
|
|
|
|
#define REQ_GRANT m9_l2
|
|
|
|
#define REQ_GRANT2 m9_l1
|
|
|
|
#define REQ_GRANT3 m9_l3
|
|
|
|
#define REQ_INODE_NR m9_l1
|
|
|
|
#define REQ_MEM_SIZE m9_l5
|
|
|
|
#define REQ_MODE m9_s3
|
|
|
|
#define REQ_MODTIME m9_l3
|
|
|
|
#define REQ_NBYTES m9_l5
|
|
|
|
#define REQ_PATH_LEN m9_s2
|
|
|
|
#define REQ_PATH_SIZE m9_l5
|
|
|
|
#define REQ_REN_GRANT_NEW m9_l1
|
|
|
|
#define REQ_REN_GRANT_OLD m9_l2
|
|
|
|
#define REQ_REN_LEN_NEW m9_s2
|
|
|
|
#define REQ_REN_LEN_OLD m9_s1
|
|
|
|
#define REQ_REN_NEW_DIR m9_l4
|
|
|
|
#define REQ_REN_OLD_DIR m9_l3
|
|
|
|
#define REQ_ROOT_INO m9_l4
|
|
|
|
#define REQ_SEEK_POS_HI m9_l3
|
|
|
|
#define REQ_SEEK_POS_LO m9_l4
|
|
|
|
#define REQ_TRC_END_HI m9_l4
|
|
|
|
#define REQ_TRC_END_LO m9_l5
|
|
|
|
#define REQ_TRC_START_HI m9_l2
|
|
|
|
#define REQ_TRC_START_LO m9_l3
|
|
|
|
#define REQ_UCRED_SIZE m9_s4
|
|
|
|
#define REQ_UID m9_s4
|
|
|
|
|
|
|
|
|
|
|
|
/* VFS/FS reply fields */
|
|
|
|
#define RES_DEV m9_l4
|
|
|
|
#define RES_GID m9_s1
|
|
|
|
#define RES_INODE_NR m9_l1
|
|
|
|
#define RES_FILE_SIZE_HI m9_l2
|
|
|
|
#define RES_FILE_SIZE_LO m9_l3
|
|
|
|
#define RES_MODE m9_s2
|
|
|
|
#define RES_NBYTES m9_l5
|
|
|
|
#define RES_OFFSET m9_s2
|
|
|
|
#define RES_SEEK_POS_HI m9_l3
|
|
|
|
#define RES_SEEK_POS_LO m9_l4
|
|
|
|
#define RES_SYMLOOP m9_s3
|
|
|
|
#define RES_UID m9_s4
|
|
|
|
|
|
|
|
/* VFS/FS flags */
|
|
|
|
#define REQ_RDONLY 001
|
|
|
|
#define REQ_ISROOT 002
|
|
|
|
#define PATH_NOFLAGS 000
|
2010-01-21 10:32:15 +01:00
|
|
|
#define PATH_RET_SYMLINK 010 /* Return a symlink object (i.e.
|
- Introduce support for sticky bit.
- Revise VFS-FS protocol and update VFS/MFS/ISOFS accordingly.
- Clean up MFS by removing old, dead code (backwards compatibility is broken by
the new VFS-FS protocol, anyway) and rewrite other parts. Also, make sure all
functions have proper banners and prototypes.
- VFS should always provide a (syntactically) valid path to the FS; no need for
the FS to do sanity checks when leaving/entering mount points.
- Fix several bugs in MFS:
- Several path lookup bugs in MFS.
- A link can be too big for the path buffer.
- A mountpoint can become inaccessible when the creation of a new inode
fails, because the inode already exists and is a mountpoint.
- Introduce support for supplemental groups.
- Add test 46 to test supplemental group functionality (and removed obsolete
suppl. tests from test 2).
- Clean up VFS (not everything is done yet).
- ISOFS now opens device read-only. This makes the -r flag in the mount command
unnecessary (but will still report to be mounted read-write).
- Introduce PipeFS. PipeFS is a new FS that handles all anonymous and
named pipes. However, named pipes still reside on the (M)FS, as they are part
of the file system on disk. To make this work VFS now has a concept of
'mapped' inodes, which causes read, write, truncate and stat requests to be
redirected to the mapped FS, and all other requests to the original FS.
2009-12-20 21:27:14 +01:00
|
|
|
* do not continue with the contents
|
|
|
|
* of the symlink if it is the last
|
|
|
|
* component in a path). */
|
2010-01-21 10:32:15 +01:00
|
|
|
#define PATH_GET_UCRED 020 /* Request provides a grant ID in m9_l1
|
- Introduce support for sticky bit.
- Revise VFS-FS protocol and update VFS/MFS/ISOFS accordingly.
- Clean up MFS by removing old, dead code (backwards compatibility is broken by
the new VFS-FS protocol, anyway) and rewrite other parts. Also, make sure all
functions have proper banners and prototypes.
- VFS should always provide a (syntactically) valid path to the FS; no need for
the FS to do sanity checks when leaving/entering mount points.
- Fix several bugs in MFS:
- Several path lookup bugs in MFS.
- A link can be too big for the path buffer.
- A mountpoint can become inaccessible when the creation of a new inode
fails, because the inode already exists and is a mountpoint.
- Introduce support for supplemental groups.
- Add test 46 to test supplemental group functionality (and removed obsolete
suppl. tests from test 2).
- Clean up VFS (not everything is done yet).
- ISOFS now opens device read-only. This makes the -r flag in the mount command
unnecessary (but will still report to be mounted read-write).
- Introduce PipeFS. PipeFS is a new FS that handles all anonymous and
named pipes. However, named pipes still reside on the (M)FS, as they are part
of the file system on disk. To make this work VFS now has a concept of
'mapped' inodes, which causes read, write, truncate and stat requests to be
redirected to the mapped FS, and all other requests to the original FS.
2009-12-20 21:27:14 +01:00
|
|
|
* and struct ucred size in m9_s4 (as
|
|
|
|
* opposed to a REQ_UID). */
|
2006-10-25 15:40:36 +02:00
|
|
|
|
- Introduce support for sticky bit.
- Revise VFS-FS protocol and update VFS/MFS/ISOFS accordingly.
- Clean up MFS by removing old, dead code (backwards compatibility is broken by
the new VFS-FS protocol, anyway) and rewrite other parts. Also, make sure all
functions have proper banners and prototypes.
- VFS should always provide a (syntactically) valid path to the FS; no need for
the FS to do sanity checks when leaving/entering mount points.
- Fix several bugs in MFS:
- Several path lookup bugs in MFS.
- A link can be too big for the path buffer.
- A mountpoint can become inaccessible when the creation of a new inode
fails, because the inode already exists and is a mountpoint.
- Introduce support for supplemental groups.
- Add test 46 to test supplemental group functionality (and removed obsolete
suppl. tests from test 2).
- Clean up VFS (not everything is done yet).
- ISOFS now opens device read-only. This makes the -r flag in the mount command
unnecessary (but will still report to be mounted read-write).
- Introduce PipeFS. PipeFS is a new FS that handles all anonymous and
named pipes. However, named pipes still reside on the (M)FS, as they are part
of the file system on disk. To make this work VFS now has a concept of
'mapped' inodes, which causes read, write, truncate and stat requests to be
redirected to the mapped FS, and all other requests to the original FS.
2009-12-20 21:27:14 +01:00
|
|
|
/* VFS/FS error messages */
|
|
|
|
#define EENTERMOUNT (-301)
|
|
|
|
#define ELEAVEMOUNT (-302)
|
|
|
|
#define ESYMLINK (-303)
|
2006-10-25 15:40:36 +02:00
|
|
|
|
- Introduce support for sticky bit.
- Revise VFS-FS protocol and update VFS/MFS/ISOFS accordingly.
- Clean up MFS by removing old, dead code (backwards compatibility is broken by
the new VFS-FS protocol, anyway) and rewrite other parts. Also, make sure all
functions have proper banners and prototypes.
- VFS should always provide a (syntactically) valid path to the FS; no need for
the FS to do sanity checks when leaving/entering mount points.
- Fix several bugs in MFS:
- Several path lookup bugs in MFS.
- A link can be too big for the path buffer.
- A mountpoint can become inaccessible when the creation of a new inode
fails, because the inode already exists and is a mountpoint.
- Introduce support for supplemental groups.
- Add test 46 to test supplemental group functionality (and removed obsolete
suppl. tests from test 2).
- Clean up VFS (not everything is done yet).
- ISOFS now opens device read-only. This makes the -r flag in the mount command
unnecessary (but will still report to be mounted read-write).
- Introduce PipeFS. PipeFS is a new FS that handles all anonymous and
named pipes. However, named pipes still reside on the (M)FS, as they are part
of the file system on disk. To make this work VFS now has a concept of
'mapped' inodes, which causes read, write, truncate and stat requests to be
redirected to the mapped FS, and all other requests to the original FS.
2009-12-20 21:27:14 +01:00
|
|
|
/* VFS/FS types */
|
2009-05-11 12:02:28 +02:00
|
|
|
|
- Introduce support for sticky bit.
- Revise VFS-FS protocol and update VFS/MFS/ISOFS accordingly.
- Clean up MFS by removing old, dead code (backwards compatibility is broken by
the new VFS-FS protocol, anyway) and rewrite other parts. Also, make sure all
functions have proper banners and prototypes.
- VFS should always provide a (syntactically) valid path to the FS; no need for
the FS to do sanity checks when leaving/entering mount points.
- Fix several bugs in MFS:
- Several path lookup bugs in MFS.
- A link can be too big for the path buffer.
- A mountpoint can become inaccessible when the creation of a new inode
fails, because the inode already exists and is a mountpoint.
- Introduce support for supplemental groups.
- Add test 46 to test supplemental group functionality (and removed obsolete
suppl. tests from test 2).
- Clean up VFS (not everything is done yet).
- ISOFS now opens device read-only. This makes the -r flag in the mount command
unnecessary (but will still report to be mounted read-write).
- Introduce PipeFS. PipeFS is a new FS that handles all anonymous and
named pipes. However, named pipes still reside on the (M)FS, as they are part
of the file system on disk. To make this work VFS now has a concept of
'mapped' inodes, which causes read, write, truncate and stat requests to be
redirected to the mapped FS, and all other requests to the original FS.
2009-12-20 21:27:14 +01:00
|
|
|
/* User credential structure */
|
|
|
|
typedef struct {
|
|
|
|
uid_t vu_uid;
|
|
|
|
gid_t vu_gid;
|
|
|
|
int vu_ngroups;
|
|
|
|
gid_t vu_sgroups[NGROUPS_MAX];
|
|
|
|
} vfs_ucred_t;
|
2006-10-25 15:40:36 +02:00
|
|
|
|
2007-08-07 13:58:03 +02:00
|
|
|
/* Request numbers */
|
|
|
|
#define REQ_GETNODE (VFS_BASE + 1) /* Should be removed */
|
|
|
|
#define REQ_PUTNODE (VFS_BASE + 2)
|
- Introduce support for sticky bit.
- Revise VFS-FS protocol and update VFS/MFS/ISOFS accordingly.
- Clean up MFS by removing old, dead code (backwards compatibility is broken by
the new VFS-FS protocol, anyway) and rewrite other parts. Also, make sure all
functions have proper banners and prototypes.
- VFS should always provide a (syntactically) valid path to the FS; no need for
the FS to do sanity checks when leaving/entering mount points.
- Fix several bugs in MFS:
- Several path lookup bugs in MFS.
- A link can be too big for the path buffer.
- A mountpoint can become inaccessible when the creation of a new inode
fails, because the inode already exists and is a mountpoint.
- Introduce support for supplemental groups.
- Add test 46 to test supplemental group functionality (and removed obsolete
suppl. tests from test 2).
- Clean up VFS (not everything is done yet).
- ISOFS now opens device read-only. This makes the -r flag in the mount command
unnecessary (but will still report to be mounted read-write).
- Introduce PipeFS. PipeFS is a new FS that handles all anonymous and
named pipes. However, named pipes still reside on the (M)FS, as they are part
of the file system on disk. To make this work VFS now has a concept of
'mapped' inodes, which causes read, write, truncate and stat requests to be
redirected to the mapped FS, and all other requests to the original FS.
2009-12-20 21:27:14 +01:00
|
|
|
#define REQ_SLINK (VFS_BASE + 3)
|
|
|
|
#define REQ_FTRUNC (VFS_BASE + 4)
|
|
|
|
#define REQ_CHOWN (VFS_BASE + 5)
|
|
|
|
#define REQ_CHMOD (VFS_BASE + 6)
|
|
|
|
#define REQ_INHIBREAD (VFS_BASE + 7)
|
|
|
|
#define REQ_STAT (VFS_BASE + 8)
|
|
|
|
#define REQ_UTIME (VFS_BASE + 9)
|
|
|
|
#define REQ_FSTATFS (VFS_BASE + 10)
|
|
|
|
#define REQ_BREAD (VFS_BASE + 11)
|
|
|
|
#define REQ_BWRITE (VFS_BASE + 12)
|
|
|
|
#define REQ_UNLINK (VFS_BASE + 13)
|
|
|
|
#define REQ_RMDIR (VFS_BASE + 14)
|
|
|
|
#define REQ_UNMOUNT (VFS_BASE + 15)
|
|
|
|
#define REQ_SYNC (VFS_BASE + 16)
|
|
|
|
#define REQ_NEW_DRIVER (VFS_BASE + 17)
|
|
|
|
#define REQ_FLUSH (VFS_BASE + 18)
|
|
|
|
#define REQ_READ (VFS_BASE + 19)
|
|
|
|
#define REQ_WRITE (VFS_BASE + 20)
|
|
|
|
#define REQ_MKNOD (VFS_BASE + 21)
|
|
|
|
#define REQ_MKDIR (VFS_BASE + 22)
|
|
|
|
#define REQ_CREATE (VFS_BASE + 23)
|
|
|
|
#define REQ_LINK (VFS_BASE + 24)
|
|
|
|
#define REQ_RENAME (VFS_BASE + 25)
|
|
|
|
#define REQ_LOOKUP (VFS_BASE + 26)
|
|
|
|
#define REQ_MOUNTPOINT (VFS_BASE + 27)
|
|
|
|
#define REQ_READSUPER (VFS_BASE + 28)
|
|
|
|
#define REQ_NEWNODE (VFS_BASE + 29)
|
|
|
|
#define REQ_RDLINK (VFS_BASE + 30)
|
|
|
|
#define REQ_GETDENTS (VFS_BASE + 31)
|
|
|
|
|
|
|
|
#define NREQS 32
|
|
|
|
|
|
|
|
#endif
|
2007-08-07 13:58:03 +02:00
|
|
|
|