diff options
author | Liav A <liavalb@gmail.com> | 2020-03-26 02:51:16 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-04-02 12:03:08 +0200 |
commit | a60ea79a41845767ce40f225de20da7c99534ad1 (patch) | |
tree | 771b082c27a3cf8060fb23a8548be83ec8837677 /Base/usr | |
parent | 6b59311d4bdc1447e085573f9bd2c42819e264dd (diff) | |
download | serenity-a60ea79a41845767ce40f225de20da7c99534ad1.zip |
Kernel & Userland: Allow to mount image files formatted with Ext2FS
Diffstat (limited to 'Base/usr')
-rw-r--r-- | Base/usr/share/man/man2/mount.md | 28 | ||||
-rw-r--r-- | Base/usr/share/man/man8/mount.md | 32 |
2 files changed, 39 insertions, 21 deletions
diff --git a/Base/usr/share/man/man2/mount.md b/Base/usr/share/man/man2/mount.md index 1d54e6be2c..5f69543802 100644 --- a/Base/usr/share/man/man2/mount.md +++ b/Base/usr/share/man/man2/mount.md @@ -7,12 +7,13 @@ mount - mount a filesystem ```**c++ #include <unistd.h> -int mount(const char* source, const char* target, const char* fs_type, int flags); +int mount(int source_fd, const char* target, const char* fs_type, int flags); ``` ## Description -`mount()` mounts a filesystem stored at `source` by overlaying its contents over `target`. +`mount()` mounts a filesystem stored at `source_fd` by overlaying its contents +over `target`. `fs_type` must be one of the following supported filesystems: @@ -21,9 +22,10 @@ int mount(const char* source, const char* target, const char* fs_type, int flags * `DevPtsFS` (or `devpts`): The pseudoterminal pseudo-filesystem (normally mounted at `/dev/pts`). * `TmpFS` (or `tmp`): A non-persistent filesystem that stores all its data in RAM. An instance of this filesystem is normally mounted at `/tmp`. -For Ext2FS, `source` must be a path to a block device storing the filesystem contents. All -the other filesystems ignore the `source` argument (by convention, it should have the same -value as `fs_type`). +For Ext2FS, `source_fd` must refer to an open file descriptor to a file containing +the filesystem image. This may be a device file or any other seekable file. All +the other filesystems ignore the `source_fd` — you can even pass an invalid file +descriptor such as -1. The following `flags` are supported: @@ -37,14 +39,22 @@ mounted file system. ### Bind mounts -If `MS_BIND` is specified in `flags`, `fs_type` is ignored and a bind mount is performed -instead. In this case `source` is treated as a path to a file or directory whose contents -are overlayed over `target`. This can be used as an alternative to symlinks or hardlinks. +If `MS_BIND` is specified in `flags`, `fs_type` is ignored and a bind mount is +performed instead. In this case, the file or directory specified by `source_fd` +is overlayed over `target` — the target appears to be replaced by a copy of the +source. This can be used as an alternative to symlinks or hardlinks. ## Errors +* `EFAULT`: The `fs_type` or `target` are invalid strings. * `EPERM`: The current process does not have superuser privileges. -* `ENODEV`: The `fs_type` is unrecognized, or the device is not found, or the device doesn't contain a valid filesystem image. +* `ENODEV`: The `fs_type` is unrecognized, or the file descriptor to source is + not found, or the source doesn't contain a valid filesystem image. Also, this + error occurs if `fs_type` is valid, but the file descriptor from `source_fd` + is not seekable. +* `EBADF`: If the `source_fd` is not valid, and either `fs_type` specifies a + file-backed filesystem (and not a pseudo filesystem), or `MS_BIND` is + specified in flags. All of the usual path resolution errors may also occur. diff --git a/Base/usr/share/man/man8/mount.md b/Base/usr/share/man/man8/mount.md index 7f0b9c2c4b..f63d45cf23 100644 --- a/Base/usr/share/man/man8/mount.md +++ b/Base/usr/share/man/man8/mount.md @@ -12,18 +12,26 @@ $ mount ## Description -If invoked without any arguments, `mount` prints a list of all currently mounted filesystems. - -If invoked as `mount -a`, `mount` mounts all the filesystems configured in `/etc/fstab`. This -is normally done on system startup by [`SystemServer`(7)](../man7/SystemServer.md). - -Otherwise, `mount` performs a single filesystem mount. Source, target, and fstype have the -same meaning as in the [`mount`(2)](../man2/mount.md) syscall (if not specified, fstype -defaults to `ext2`). - -Options correspond to the mount flags, and should be specified as a comma-separated list of -flag names (lowercase and without the `MS_` prefix). Additionally, the name `defaults` is -accepted and ignored. +If invoked without any arguments, `mount` prints a list of all currently mounted +filesystems. + +If invoked as `mount -a`, `mount` mounts all the filesystems configured in +`/etc/fstab`. This is normally done on system startup by +[`SystemServer`(7)](../man7/SystemServer.md). + +Otherwise, `mount` performs a single filesystem mount. Source should be a path +to a file containing the filesystem image. Target, and fstype have the same +meaning as in the [`mount`(2)](../man2/mount.md) syscall (if not specified, +fstype defaults to `ext2`). + +A special source value "none" is recognized, in which case +[`mount`(8)](mount.md) will not attempt to open the source as a file, and will +pass an invalid file descriptor to [`mount`(2)](../man2/mount.md). This is +useful for mounting pseudo filesystems. + +Options correspond to the mount flags, and should be specified as a +comma-separated list of flag names (lowercase and without the `MS_` prefix). +Additionally, the name `defaults` is accepted and ignored. ## Files |