Filing Systems



Fileystem registrant abuse

A number of filing systems have abused the allocations of filing system numbers, filing system prefix names, filing system module names, and filing system filer names. This causes a serious problems for users who wish to use both systems within a single environment. Vendors have been made aware of this problem, and have been asked to obtain alternative allocations such that such components can coexist peacefully.

Duplication of filing system numbers causes problems for fault identification (error numbers may be returned by multiple filing systems), for FileSwitch registration (only a single filing system may exist with a given number), and for filing system identification (Filer, for example, uses the filing system number as a hash to locate candidate filers during upcall operations).

Duplication of filing system prefix names causes problems with path specification (a filing system prefix should only apply to a single filing system) and may cause undesirable effects dependent on filing system registration order (the most recently registered filing system's prefix will take precedence). Persistent filenames (such as those used within a boot sequence) will be non-deterministic if duplicate filing systems have existed on a system.

Duplicated module names cannot coexist within the system. The initialisation of a module with the same name as an existing filing system module will result in the first module being finalised, potentially with data loss from open files, depending on the filing system.

Duplicated filing system filer modules will result in one of the pair of filing systems filers being terminated. Depending on the filing system filer's support for module finalisation whilst a module task exists, this may cause unexpected aborts, or less desirable behaviour.

In addition to this, the abusers of these filing system numbers expose problems caused by the special case handling by FileSwitch of those filing systems.

During the development of RISC OS 3, a number of filing systems, registered to legitimate owners, were found to not behave correctly under the new interfaces introduced by that OS. The filing systems were unable to handle path names which include an explicit root ('$') specifier as part of their path. The FileSwitch module was updated to include a special table of filing systems which were known to fail and to allow them to function.

Certain of the filing system numbers which have been reused are members of the set of filing systems which are in the special table. The effect of this is that the filing systems which abuse the operations receive special treatment which they do not need and which causes them to behave poorly.

Vendors have been resistant to obtaining valid registrations, it has been necessary to introduce alternative measures to ensure that these filing systems behave correctly. Removing the entries from that table is not a suitable solution as this would mean that the legitimate registrant was disadvantaged to the benefit of the abuser. Instead, the Filing System Extra Information word (offset &2C in the Filing System Information Block) has a new bit (bit 4) allocated to indicate that the filing system does not require the special case to be applied. Either usurper filing systems or fixed versions of the legitimate filing systems may set this bit to indicate that they do not wish to have the special table applied to them.

The list of filing systems which are special cased by FileSwitch is listed below :

Tape1200 1
Tape300 2
Rom 3
Telesoft 6
Reserved 9
Vfs 10
acacia_ramfs 16
rfs 22
DigiTape 25
ScanFS 28
Fax 30
Z88 31
Serial2 34
DFSDeskFS 35
RISCardFS 38
pcfs 39
BBScanFS 40
BroadcastLoaderUtils 41
ChunkFS 42
NoRiscFS 44
NexusFilerFS 48
CCPrintFS 50
VideoDigitiserFS 51
SoundDigitiserFS 52
ArcFS 56
NexusPrintFS 57
PIA 58
RSDosFS 59
dbFS 60
MenonFS 121

FileCore will set the Filing System Extra Information Word bit to indicate that they should always be exempt from the special table. FileCore has always been able to handle paths in a manner compatible with the contemporary FileSwitch. Filing systems which are members of this table and which are implemented as FileCore filing systems will automatically have this bit set for them.

It should be obvious from this description that it is vital that unique registrations be made and honoured by developers.

New 'extra filing system information word' bit

As described above, a new bit has been added to the extra filing system information word in order to indicate that the filing system should not be constrained by the special case code.

    Bit 4 : Filing system does not wish to be special cased by FileSwitch

This documentation is copyright 3QD Developments Ltd 2013 and may not be reproduced or published in any form without the copyright holders permission. RISC OS is subject to continuous development and improvement as such all information is reproduced by 3QD Developments Ltd in good faith and is believed to be correct at the time of publication E&OE. 3QD Developments Ltd cannot accept any liability for any loss or damage arising from the use of any information provided as part of the RISC OS Documentation.

HTML document version 1.03 3rd November 2015