Filing system improvements


Performance:

  Directory entry caching
    In FileSwitch
    Needs mechanism to allow update from network servers
  Data caching
  Secondary file caching
  Application-level non-blocking read/write
    Use pollword? new Wimp event?
  Write buffer
    Allows ordering of writes to disc so that the head seeks in the same
     direction ("elevator seeking") - saves power, makes recovery from
     crashes more tricky.
    Care needed with removeable media ...


Remove arbitrary limits:

  10-char file names
    Filer implications
  Allow spaces in file names ...
    Filer implications
  77 file directories
  255 char path names (?)
  512MB disc size


Add features to support file servers:

  New security model
    Unix/NFS? - remember no uid concept in RISC OS
  Quotas (accounting facilities)


Add features to support OLE [Object Linking and Embedding]:

  Typed directories
  Symbolic links
    A file is presented to the user as something different - as the file to
     which it is linked. This needs file access to be intercepted, in the
     same way that directory access is intercepted to implement image FS
    User interface is important: perhaps represent link using icon of object
     linked to, with a red arrow across it?
    Use CTRL/DRAG to create a symbolic link?
    Does this obviate the need for a mount point?
  Unique file ids


Miscellaneous:

  Descriptive text associated with a file/directory
  File creator, owner


Not to be done:

  Compression
  Transaction support
  Undelete
  "Mirror" filing system (or merging support for portable)


Architectural suggestion:

  Split FileCore into FileCore(Structure) and FileCore(Discs); this latter
   presents whole discs to FileSwitch which then passes them to (Structure)
   to process as "ADFS" file structures.


Queries:

  At present, a partition is presented to the user in different ways for
   different purposes: double-click, and it opens like a directory; delete
   or count, and it's treated like a file. This "mixed-metaphor" approach
   could be dangerous in the future - for example, deleting a directory
   should not be permitted if any files within it are locked (etc.).
