Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 1 | .. SPDX-License-Identifier: GPL-2.0 |
| 2 | |
| 3 | =============================== |
| 4 | Acorn Disc Filing System - ADFS |
| 5 | =============================== |
| 6 | |
| 7 | Filesystems supported by ADFS |
| 8 | ----------------------------- |
| 9 | |
| 10 | The ADFS module supports the following Filecore formats which have: |
| 11 | |
| 12 | - new maps |
| 13 | - new directories or big directories |
| 14 | |
| 15 | In terms of the named formats, this means we support: |
| 16 | |
| 17 | - E and E+, with or without boot block |
| 18 | - F and F+ |
| 19 | |
| 20 | We fully support reading files from these filesystems, and writing to |
| 21 | existing files within their existing allocation. Essentially, we do |
| 22 | not support changing any of the filesystem metadata. |
| 23 | |
| 24 | This is intended to support loopback mounted Linux native filesystems |
| 25 | on a RISC OS Filecore filesystem, but will allow the data within files |
| 26 | to be changed. |
| 27 | |
| 28 | If write support (ADFS_FS_RW) is configured, we allow rudimentary |
| 29 | directory updates, specifically updating the access mode and timestamp. |
| 30 | |
| 31 | Mount options for ADFS |
| 32 | ---------------------- |
| 33 | |
| 34 | ============ ====================================================== |
| 35 | uid=nnn All files in the partition will be owned by |
| 36 | user id nnn. Default 0 (root). |
| 37 | gid=nnn All files in the partition will be in group |
| 38 | nnn. Default 0 (root). |
| 39 | ownmask=nnn The permission mask for ADFS 'owner' permissions |
| 40 | will be nnn. Default 0700. |
| 41 | othmask=nnn The permission mask for ADFS 'other' permissions |
| 42 | will be nnn. Default 0077. |
| 43 | ftsuffix=n When ftsuffix=0, no file type suffix will be applied. |
| 44 | When ftsuffix=1, a hexadecimal suffix corresponding to |
| 45 | the RISC OS file type will be added. Default 0. |
| 46 | ============ ====================================================== |
| 47 | |
| 48 | Mapping of ADFS permissions to Linux permissions |
| 49 | ------------------------------------------------ |
| 50 | |
| 51 | ADFS permissions consist of the following: |
| 52 | |
| 53 | - Owner read |
| 54 | - Owner write |
| 55 | - Other read |
| 56 | - Other write |
| 57 | |
| 58 | (In older versions, an 'execute' permission did exist, but this |
| 59 | does not hold the same meaning as the Linux 'execute' permission |
| 60 | and is now obsolete). |
| 61 | |
| 62 | The mapping is performed as follows:: |
| 63 | |
| 64 | Owner read -> -r--r--r-- |
| 65 | Owner write -> --w--w---w |
| 66 | Owner read and filetype UnixExec -> ---x--x--x |
| 67 | These are then masked by ownmask, eg 700 -> -rwx------ |
| 68 | Possible owner mode permissions -> -rwx------ |
| 69 | |
| 70 | Other read -> -r--r--r-- |
| 71 | Other write -> --w--w--w- |
| 72 | Other read and filetype UnixExec -> ---x--x--x |
| 73 | These are then masked by othmask, eg 077 -> ----rwxrwx |
| 74 | Possible other mode permissions -> ----rwxrwx |
| 75 | |
| 76 | Hence, with the default masks, if a file is owner read/write, and |
| 77 | not a UnixExec filetype, then the permissions will be:: |
| 78 | |
| 79 | -rw------- |
| 80 | |
| 81 | However, if the masks were ownmask=0770,othmask=0007, then this would |
| 82 | be modified to:: |
| 83 | |
| 84 | -rw-rw---- |
| 85 | |
| 86 | There is no restriction on what you can do with these masks. You may |
| 87 | wish that either read bits give read access to the file for all, but |
| 88 | keep the default write protection (ownmask=0755,othmask=0577):: |
| 89 | |
| 90 | -rw-r--r-- |
| 91 | |
| 92 | You can therefore tailor the permission translation to whatever you |
| 93 | desire the permissions should be under Linux. |
| 94 | |
| 95 | RISC OS file type suffix |
| 96 | ------------------------ |
| 97 | |
| 98 | RISC OS file types are stored in bits 19..8 of the file load address. |
| 99 | |
| 100 | To enable non-RISC OS systems to be used to store files without losing |
| 101 | file type information, a file naming convention was devised (initially |
| 102 | for use with NFS) such that a hexadecimal suffix of the form ,xyz |
| 103 | denoted the file type: e.g. BasicFile,ffb is a BASIC (0xffb) file. This |
| 104 | naming convention is now also used by RISC OS emulators such as RPCEmu. |
| 105 | |
| 106 | Mounting an ADFS disc with option ftsuffix=1 will cause appropriate file |
| 107 | type suffixes to be appended to file names read from a directory. If the |
| 108 | ftsuffix option is zero or omitted, no file type suffixes will be added. |