Amiga Fast File System (AFFS)

Discussion in 'Filesystem' started by Jarret W. Buse, Aug 13, 2013.

  1. Jarret W. Buse

    Jarret W. Buse Well-Known Member Staff Writer

    Messages:
    173
    Likes Received:
    256
    Trophy Points:
    63
    Amiga Fast File System (AFFS or FFS)

    In 1988, Amiga produced the Fast File System (FFS) for use on the AmigaOS version 1.3 in 1988. The FFS file system was an update to what was later termed "Old File System" (OFS), released in 1985. FFS was backward compatible with OFS. The file systems were both released for the Amiga systems which had hard disks or floppy disks. Originally, the AmigaOS was termed AmigaDOS or Workbench and FFS had a version number of v34.

    The Fast File System was first supported by Linux kernel 2.1.x.

    FFS 1.3 was the first Amiga file system to support hard disk booting. Before version 1.3, Amiga systems had to be booted from floppy disks. FFS 1.3 was first shipped with the Amiga 500 and 2000 (or could be applied as an update). The Amiga 1000 used FFS on systems with an updated ROM chip or a new boot floppy (Kickstart).

    The main patch of FFS is that it allowed a 512-byte block to be filled. Previous file system versions only allowed 488 bytes of the block to be used for data (24 bytes were used in the checksum). Of course, this wasted a lot of storage space. For example, if a file is 1 kb (1024 bytes) were to be written to disk, it would take three blocks. The first two blocks would be filled with 488 bytes while the third would hold 48 bytes. This file wastes a total of 512 bytes, or one block. So every 1 kb written to disk wasted 512 bytes or half the total space written to disk. A 5 kb file wastes 2.5 kb.

    Another issue with OFS fixed with FFS is that OFS placed 24 bytes of redundant information (checksum) in each block. The redundant data was needed to 'fix' corrupted data on poor media surfaces.

    NOTE: Floppy disks and even some hard disks in the early 1980's were not always of the highest quality. It was not uncommon to have numerous bad sectors on storage media. Of course, the large 8" floppy disks held very little data, similar to the 5 1/4" floppies. Bad sectors only reduced the amount of usable space. It was also not uncommon to have sectors go bad the more a disk was used.

    The redundant data posed a bottleneck in performance when used on a hard disk, which were more reliable. At this point, OFS continued to be used on floppy disks to handle the poor reliability of the media. FFS was used on the hard disks to allow for booting from the hard drive.

    FFS provided management of the file system by using a bitmap.


    NOTE: Bitmaps are used to track used and unused space. These bitmaps are not images, but a file where each bit represents an addressable block. Each bit is either on (1) or off (0) to represent if it is used or free. In the case of FFS, a 0 means the block is used and 1 means the bock is free.

    If the sector holding the bitmap is lost or corrupted, then the whole file system can become invalid and the bitmap must be rebuilt. The Amiga Validator could be used to rebuild the bitmap. Problems occurred that directories could become corrupted during the rebuild. The larger the hard disk, the longer the rebuild.

    FFS had a storage limitation of 4 GB due to the file system being 32-bits. That is, the file system could only use 32-bits to generate addressable spaces. When converting 32-bits to addresses, the largest number that can be produces is 4,294,967,295 which is 4.194 GB, this makes the largest file size possible as 4 GB. Later patches for FFS provided support for 64-bit addressing for the largest addressable block being 18,446,744,073,709,551,615.

    The Amiga file systems have eight modes. The modes are referred to as dostypes. Each dostype has a descriptor which is listed in the Rigid Disk Block (RDB) which is similar in nature to a Master Boot Record (MBR).

    DOS\0 – The original OFS type. It was used by most companies to format floppies since the Amiga systems were backwards compatible from FFS to OFS.

    DOS\1 – The original FFS with no patches.

    DOS\2 – (OFS-INTL) International mode for OFS, which allows for the reading of files with foreign language characters.

    DOS\3 – (FFS-INTL) International mode for FFS, which allows for the reading of files with foreign language characters.

    DOS\4 – (OFS-DC) Directory Cache mode for OFS that cached a listing of the directory structure in a separate list. This increased directory reading speeds, but slowed other disk reads.

    DOS\5 - (FFS-DC) Directory Cache mode for FFS that cached a listing of the directory structure in a separate list. This increased directory reading speeds, but slowed other disk reads.

    DOS\6 – (OFS-LNFN) Allowed for long file name (107 characters) on an OFS disk as compared to 31 characters.

    DOS\7 - (FFS-LNFN) Allowed for long file name (107 characters) on an FFS disk as compared to 31 characters.

    NOTE: Linux AFFS supports all dostypes except DOS\6 and DOS\7.

    Attached Files:

    DevynCJohnson likes this.

Share This Page