Acorn Disc Filing System - ADFS

Filesystems supported by ADFS

The ADFS module supports the following Filecore formats which have:

  • new maps

  • new directories or big directories

In terms of the named formats, this means we support:

  • E and E+, with or without boot block

  • F and F+

We fully support reading files from these filesystems, and writing toexisting files within their existing allocation. Essentially, we donot support changing any of the filesystem metadata.

This is intended to support loopback mounted Linux native filesystemson a RISC OS Filecore filesystem, but will allow the data within filesto be changed.

If write support (ADFS_FS_RW) is configured, we allow rudimentarydirectory updates, specifically updating the access mode and timestamp.

Mount options for ADFS

uid=nnn

All files in the partition will be owned byuser id nnn. Default 0 (root).

gid=nnn

All files in the partition will be in groupnnn. Default 0 (root).

ownmask=nnn

The permission mask for ADFS ‘owner’ permissionswill be nnn. Default 0700.

othmask=nnn

The permission mask for ADFS ‘other’ permissionswill be nnn. Default 0077.

ftsuffix=n

When ftsuffix=0, no file type suffix will be applied.When ftsuffix=1, a hexadecimal suffix corresponding tothe RISC OS file type will be added. Default 0.

Mapping of ADFS permissions to Linux permissions

ADFS permissions consist of the following:

  • Owner read

  • Owner write

  • Other read

  • Other write

(In older versions, an ‘execute’ permission did exist, but thisdoes not hold the same meaning as the Linux ‘execute’ permissionand is now obsolete).

The mapping is performed as follows:

    Owner read                              -> -r--r--r--    Owner write                             -> --w--w---w    Owner read and filetype UnixExec        -> ---x--x--xThese are then masked by ownmask, eg 700    -> -rwx------    Possible owner mode permissions         -> -rwx------    Other read                              -> -r--r--r--    Other write                             -> --w--w--w-    Other read and filetype UnixExec        -> ---x--x--xThese are then masked by othmask, eg 077    -> ----rwxrwx    Possible other mode permissions         -> ----rwxrwx

Hence, with the default masks, if a file is owner read/write, andnot a UnixExec filetype, then the permissions will be:

-rw-------

However, if the masks were ownmask=0770,othmask=0007, then this wouldbe modified to:

-rw-rw----

There is no restriction on what you can do with these masks. You maywish that either read bits give read access to the file for all, butkeep the default write protection (ownmask=0755,othmask=0577):

-rw-r--r--

You can therefore tailor the permission translation to whatever youdesire the permissions should be under Linux.

RISC OS file type suffix

RISC OS file types are stored in bits 19..8 of the file load address.

To enable non-RISC OS systems to be used to store files without losingfile type information, a file naming convention was devised (initiallyfor use with NFS) such that a hexadecimal suffix of the form ,xyzdenoted the file type: e.g. BasicFile,ffb is a BASIC (0xffb) file. Thisnaming convention is now also used by RISC OS emulators such as RPCEmu.

Mounting an ADFS disc with option ftsuffix=1 will cause appropriate filetype suffixes to be appended to file names read from a directory. If theftsuffix option is zero or omitted, no file type suffixes will be added.