Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Amiga Fast File System
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|File system used on Amiga computers}} {{Distinguish|Berkeley Fast File System}} {{Infobox filesystem |name = A<u>FFS</u> |full_name = Amiga Fast File System |developer = {{nowrap|[[Commodore International]]}} |introduction_os = {{nowrap|[[AmigaOS]] v1.3}} |introduction_date =1988 | preceded_by = [[Amiga Old File System|''Old File System'']] |variants ={{unbulleted list | <small>OFS (Non-intl.)</small> | <small>FFS (Non-intl.)</small> | <small>OFS (Intl., no DirCache)</small> | <small>FFS (Intl., no DirCache)</small> | <small>OFS (Intl., DirCache)</small> | <small>FFS (Intl., DirCache)</small>}} |partition_id = ([[Amiga rigid disk block|RDB]]):<ref name="AmigaWiki">{{cite web |url=https://www.amigawiki.org/doku.php?id=de:system:filesystem |title=Filesystem |website=www.AmigaWiki.net |date=2019 |access-date=23 January 2025}}</ref> {{unbulleted list |<small><code>DOS\{{abbr|x00|Values in C-notation for hexadecimal numbers}}</code> (Non-intl.)</small> |<small><code>DOS\x01</code> (Non-intl.)</small> |{{nowrap|<small><code>DOS\x02</code> (Intl.,no DirCache)</small>}} |<small><code>DOS\x03</code> (Intl.,no DirCache)</small> |<small><code>DOS\x04</code> (Intl., DirCache)</small> |<small><code>DOS\x05</code> (Intl., DirCache)</small>}} |file_struct = [[bit array|bitmap]] |bad blocks struct = |max_filename_size = 30 |max files no = |max_volume_size = 4 [[gigabyte|GB]] |max file size = |filename character set = |dates recorded = |date range = |date resolution = |forks streams = |attributes = filenote |file system permissions = |compression = No |directory struct = |encryption = No |OS = [[AmigaOS]] |bootable = Yes }} The '''Amiga Fast File System''' (abbreviated '''AFFS''', or more commonly historically as '''FFS''') is a [[file system]] used on the [[Amiga]] [[personal computer]] from the computer-manufacturer [[Commodore International|Commodore Int'l.]]. The previous Amiga filesystem was never given a specific name and known originally simply as "DOS" or ''AmigaDOS''. Upon the release of FFS and for purposes of differentiation, the original filesystem became retrospectively known as [[Amiga Old File System|Amiga's ''Old File System'']], shortened OFS. The former file-system OFS, which was primarily designed for use with floppy disks, had been proving slow to keep up with hard drives of the era. FFS was designed as a full replacement for the original Amiga filesystem. FFS differs from its predecessor mainly in the removal of redundant information. [[Data block]]s contain nothing but data, allowing the filesystem to manage the transfer of large chunks of data directly from the [[host adapter]] to the final destination. ==Characteristics== {{Unreferenced section|date=December 2023|small=y}} OFS was the predecessor to FFS. Before FFS was released, [[AmigaOS]] had a single filesystem simply called AmigaDOS: this uses 24 bytes per [[disk sector|sector]] for redundancy data, providing for reconstructing structural data on less reliable media such as floppy disks. When higher-speed media (i.e. [[hard disk]]s) became more available to the Amiga, this redundant data posed a bottleneck as all data needed to be realigned to be passed to the application. The redundancy was removed with FFS and the data read in from media are passed to the application directly. The previous filesystem, AmigaDOS, was renamed OFS, Old File System, to differentiate between it and FFS. FFS was [[backward-compatible]] and could access devices formatted with OFS. Given these advantages, FFS was rapidly adopted as the most common filesystem used by almost all Amiga users, although OFS continued to be widely used on floppy disks from third-party software vendors. (This was purely for compatibility with pre-AmigaOS 2 systems in games and applications that did not actually require AmigaOS 2+, as machines running earlier versions of the OS without FFS in the [[read-only memory|ROM]] could not boot from these floppies, although they could still read them if they had FFS installed.) Amiga FFS is simple and efficient, and when introduced was more than adequate, and had many advantages compared to the file systems of other platforms. However, as OFS had done before it, it aged; as drives became larger and the number of files on them increased, its use as a day-to-day filesystem became more problematic in terms of difficulty of maintenance and competitiveness of general performance. Despite this, it is still used on AmigaOS systems and shipped with both [[MorphOS]] and [[AmigaOS 4]]. By the last [[Commodore International|Commodore]] release of AmigaOS, 3.1, FFS was still the only filesystem shipped as standard with the Amiga, but it was already showing its age as technology advanced. FFS (and OFS) stores a "[[bit array|bitmap]]" of the filesystem in a single sector. On write, this is first marked as invalid, then the write is completed, then the bitmap is updated and marked as valid. If a write operation is interrupted by a [[Crash (computing)|crash]] or disk removal, this then allows the 'disk-validator' program to undo the damage. This resembled a very simple form of [[Journaling file system|filesystem journaling]]. To allow the disk to be used again with an invalidated OFS or FFS filesystem, the entire disk has to be completely scanned and the bitmap rebuilt, but only the data being modified during the write would be lost. During this scanning the disk cannot be written to (except by the disk-validator as it performs its function), and read access is very slow. AmigaOS originally included a disk-validator on every bootable disk, which was prone to being replaced by [[boot sector virus|viruses]] to allow themselves to spread (for example the "Saddam Hussein" virus). Later it became part of the ROM from [[Kickstart (Amiga)|Kickstart]] 2.x onwards, protecting it from malicious replacement. The disk-validator attempted to repair the bitmap on an invalidated drive by write-protecting the drive and scanning it; this could take a long time and made it very slow to access the disk until it was finished, especially on slower media. As hard drives got larger and contained more files, the validation process could take many hours. In addition, files and directories could feasibly be lost (often without the user being notified or even aware) during the process if their data hashes were corrupted. In some cases the validator could fail and leave the disk in a non-validated state, requiring the user to use a third-party disk tool like DiskSalv to make the volume writable again, or simply save the files by copying them to a fresh [[disk partition|partition]]—a very slow process. FFS was also originally limited to 32-bit [[address space|addressing]] and therefore about 4 GB drives, or at least the first 4 GB on a larger drive. Attempting to use FFS partitions beyond this limit caused serious [[data corruption]] all through the drive. FFS belatedly got some third-party 64-bit [[patch (software)|patches]] and then official (but non-Commodore) updates to allow it to circumvent these limitations. The latter were supplied with AmigaOS 3.5 and 3.9, from Haage & Partner. The former often were supplied with third-party disk controllers, such as those from [[Phase5]], where the ability to use large-capacity disks was a selling point. The two systems were not mutually compatible. In terms of support tools, although Commodore itself only shipped with an application called DiskDoctor (and later removed it from AmigaOS disks), FFS had a small selection of third-party tools—most notably DiskSalv—to maintain the file system and repair and validate it, undelete files, or reverse "quick formats" (filesystem initializations). An OFS or FFS volume had to be locked to defragment or convert to different FFS modes to prevent corruption and this made it inaccessible to everything but the tool defragmenting it. Most of these tools were not updated when FFS became capable of 64-bit addressing and could only operate on partitions smaller than 4 GB; they could not read partitions bigger than 4 GB, and would generally corrupt partitions "beyond" the 4 GB boundary. When hard drives in use by Amiga users were reaching 4 GB in size, this became a problem. For all of these reasons, FFS was often replaced by users in the mid-1990s with more up-to-date alternatives such as [[Smart File System]] (SFS) and [[Professional File System]] (PFS), which did not have these limitations and were considered safer, faster and more efficient. SFS in particular continued to be developed and is now{{When|date=May 2017}} as close to a generic AmigaOS filesystem as FFS, and is the default filesystem for [[AROS Research Operating System|AROS]]. ==History== {{Timeline of release years | range1 = 1988 - 1989 | range1_color = #ff8a00 #0055ad <!-- Colours are those from Workbench v1.2–1.3 --> | range2 = 1990 - 1991 | range2_color = #638abd #adaaad <!-- Colours are those from Workbench v2.04–2.1 --> | range3 = 1991 - 1992 | range3_color = #228B22 | 1988 = v34 with AmigaOS v1.3 | 1990 = v37 with AmigaOS v2.0 | 1992 = v39 with AmigaOS v3.0 | 1993 = v40 with AmigaOS v3.1}} FFS was introduced with version 1.3 of [[AmigaOS]]<ref>{{cite web | url=http://www.gregdonner.org/workbench/wb_13chg.txt | website=gregdonner.org| title=wb_13chg.txt | first=Gregory| last= Donner|access-date=Nov 12, 2012}}</ref> in 1988,<ref>1.3 release confirmed on September 16, 1988, by Carolyn Scheppner of CATS in amiga.dev in [[Byte Information Exchange|BIX]]. [http://groups.google.co.uk/group/comp.sys.amiga/msg/f8a849922796bc93 Copy of BIX announcement from USENET]</ref> and replaced both the Kickstart ROM (or Kickstart floppy for A1000s) and [[Workbench (AmigaOS)|Workbench]] floppy with updated software. It carried the version number of v34, like the rest of the AmigaOS 1.3 components. Kickstart 1.3 provided autobooting support so that the machine could now be booted from hard disk or reset-proof RAM disk ("RAD:"), whereas earlier Kickstart releases could only be booted from floppy disk. Workbench 1.3 provided the FFS filesystem [[device driver]] on disk, which could be copied into the [[Amiga Rigid Disk Block|Rigid Disk Block (RDB)]] on hard disks. Compliant [[block device]]s would then load and install the filesystem driver before filesystems were mounted and thus make it possible to use loadable filesystems on hard disks. Kickstart 1.2 could boot Workbench 1.3 from floppy (and vice versa), but it needed both Kickstart and Workbench 1.3 to autoboot FFS-formatted hard disks. FFS support was merged into the ROM-based filesystem from Kickstart 2.0 onwards, and so it was no longer necessary to install FFS in the RDB. The ability to load filesystems from the RDB still remained available in case one wished to fix ROM bugs, get new FFS features, or use a third-party filesystem. Floppies are unpartitioned devices without a RDB and also do not use the autobooting mechanism, so were only bootable if the disk's dostype was one the ROM-based filesystem understood. As a result, FFS-formatted floppies were not bootable until the release of Kickstart 2.0, and mounting them under Workbench 1.3 involved some ugly unsupported hacks. Similarly, "Directory Cache" variants were not bootable or supported until Kickstart 3.0. The various FFS flavours did not have any compatibility problems with Amiga software, even ones that were considered "system-unfriendly". Software would either use the system calls and thus work with any filesystem, or be "trackloaders" and not use a filesystem at all. ==FFS Modes== FFS operated in several modes, defined as and by "DOS types". AmigaOS filesystems are identified by a four letter-descriptor which is specified either in the RDB or a so-called ''mountlist'' or ''dosdriver''; alternatively (as was the case in ''trackdisk''-like devices like floppy disks), the disk itself could be formatted in any DOStype specified. The FFS-DOStypes introduced with AmigaOS v1.3 (v34) were as follows:<ref>AmigaOS user manual 3.1</ref> {| class="wikitable" |- ! style="width: 5%"| DOSType ! Type ! style="width: 15%"| AmigaDOS |- | <code>DOS\'''0'''</code> | The former filesystem, ''Original File System'' (OFS). The filesystem the Amiga used until then – Then consequently referred to as ''Original File System'', short OFS. | {{nowrap|AmigaOS v1.0–v1.2}} |- | <code>DOS\'''1'''</code> | The new filesystem, ''FastFileSystem'' (FFS). The first, disk-based release of FFS – The original FastFileSystem did not offer any additional modes. | {{nowrap|AmigaOS v1.3–v2.0}} |- | colspan="3" | The former primary Amiga filesystem, now called OFS, was taken over and integrated into FFS using the first DOS Type DOS\0 for purposes of backward-compatibility. As the majority floppy-disks shipped by software-companies or as magazine-coverdisks still used this DOS type (which would boot on pre-2.x machines like the Amiga 500), this enabled users with existing OFS-formatted drives, that all older OFS-based disks could still be read afterwards, once they had installed FFS to the RDB of their start-disk. |- | colspan="3" style="background-color:#d7dfe4" | '''Note:''' Although DOSType <code>DOS\0</code> is based on the former OFS, this FFS-mode is still <u>not</u> backward-compatible with ''Workbench'' below 2.0.<ref name="Amiga_OS_3.1_Workbench_FFS-reference0">{{cite book |author=AMIGA Technologies GmbH |date=1995 |title=AMIGA OS 3.1 Workbench |publisher=Escom AG |quote=Fast File System disks are incompatible with Workbench software releases prior to 2.0 and should not be selected for disks that are also used on pre-Release 2 Amigas. |page=84 |url=https://archive.org/details/EscomAmigaOS3.1Workbench/page/n83/}}</ref> |} AmigaOS 2.04 made FFS (now v37) part of the Kickstart ROM and introduced new modes for handling international characters in filenames,<ref>All Amiga file systems can handle international characters but prior to the International versions they treated upper and lower cased letters as completely distinct characters.</ref> and for an on-disk directory [[Cache (computing)|cache]]. Each new mode was available with both OFS- and FFS-DOSTypes. This odd system was for reasons of parity: OFS-modes apart from <code>DOS\0</code> were almost never used but were available nonetheless. The new FFS-DOStypes introduced with AmigaOS v2.04 (v37): {| class="wikitable" |- ! style="width: 5%"| DOSType ! Type ! style="width: 15%"| AmigaDOS |- | <code>DOS\'''2'''</code> | Mode ''International'' (OFS-INTL) for the former OFS. Allows OFS the use of international characters. | {{nowrap|AmigaOS v2.04–v3.0}} |- | <code>DOS\'''3'''</code> | Mode ''International'' (FFS-INTL) for the new FFS. Allows FFS the use of international characters – This was the most commonly used FFS-mode overall. | {{nowrap|AmigaOS v2.04–v3.0}} |- | colspan="3" | The "International"-mode of the respective DOS-Types enabled both file-systems the use of international characters and thus the handling of file- and folder-names with characters, which are <u>not</u> found in English Latin character-set ([[ISO/IEC 8859-1]]), such as ä, ê, î, ö and ü. → All higher DOS-Types have International-mode integrated by default |- | colspan="3" style="background-color:#d7dfe4" | '''Note:''' Although DOSType <code>DOS\2</code> is based on the OFS, that Int'l mode-extension is still <u>not</u> backward-compatible with purely OFS-based Amiga-systems without FFS.<ref name="Amiga_OS_3.1_Workbench_FFS-reference_Intl">{{cite book |author=AMIGA Technologies GmbH |date=1995 |title=AMIGA OS 3.1 Workbench |publisher=Escom AG |quote=International Mode is incompatible with Workbench software releases prior to 2.0 and should not be selected for disks that are also used on pre-Release 2 Amigas. |page=84 |url=https://archive.org/details/EscomAmigaOS3.1Workbench/page/n83/}}</ref> |} |} The last published major version of FFS by Commodore (v39), saw the following FFS-DOSTypes being introduced with AmigaOS v3.0: {| class="wikitable" |- ! style="width: 5%"| DOSType ! Type ! style="width: 15%"| AmigaDOS |- | <code>DOS\'''4'''</code> | Mode ''Directory Cache'' (OFS-DC) for the former OFS. Allows OFS the use of primitive directory-caching. | {{nowrap|AmigaOS v3.0–v3.1}} |- | <code>DOS\'''5'''</code> | Mode ''Directory Cache'' (FFS-DC) for the new FFS. Allows FFS the use of primitive directory-caching. | {{nowrap|AmigaOS v3.0–v3.1}} |- | colspan="3" | This mode enables primitive directory-caching, by creating dedicated directory-lists instead of having to pick up the linked directory/file entries that lie scattered over the disk. A certain (small) amount of disk space to store the directory data is allocated.<ref>{{cite web|url=http://www.amigahistory.co.uk/adfaq.html#p47|title=Amiga History Guide|website=www.AmigaHistory.co.uk|access-date=May 1, 2017}}</ref> The ''DirCache''-option improved directory reading-in speed drastically but creating, deleting and renaming files became slower.<br /> It did <u>not</u> increase the speed of reading individual files. It became a popular choice on Amiga hard drives, but according to Olaf Barthel, author of FFS2, the use of ''DirCache'' modes was probably better suited for floppy disks than it was for hard drives, where it would cause an overall degradation in performance compared to lack of dircache.<ref>{{Cite web | url=http://wiki.amigaos.net/wiki/DCFS_and_LNFS_Low_Level_Data_Structures#Limitations_and_drawbacks | title=Limitations and Drawbacks in DCFS modes - AmigaOS Documentation Wiki | website=wiki.amigaos.net | language=en | access-date=2017-05-07}}</ref> Despite this, it was rarely used on floppies, particularly because of the cache eating precious space, and because of the limited space preventing a large number of files to cache in the first place. The ''DirCache''-mode further lacks any mechanism for [[Garbage collection (computer science)|garbage collection]], which means that partly filled cache blocks are never consolidated and will keep taking up space.<ref name=":0">{{Cite web|url=http://wiki.amigaos.net/wiki/DCFS_and_LNFS_Low_Level_Data_Structures|title=DCFS and LNFS Low Level Data Structures - AmigaOS Documentation Wiki|website=wiki.amigaos.net|language=en|access-date=2017-05-07}}</ref> |- | colspan="3" style="background-color:#d7dfe4" | '''Note:''' Both ''DirCache''-modes are <u>not</u> backwards compatible with earlier versions of FFS.<ref name="Amiga_OS_3.1_Workbench_FFS-reference_DirCache">{{cite book |author=AMIGA Technologies GmbH |date=1995 |title=AMIGA OS 3.1 Workbench |publisher=Escom AG |quote=Disks using Directory Cache are incompatible with Workbench software releases prior to 3.0 and should not be selected for disks that are also used on pre-Release 3 Amigas. |page=84 |url=https://archive.org/details/EscomAmigaOS3.1Workbench/page/n83/}}</ref> |} Version v40.1 was the last version of FFS released by Commodore, and came with AmigaOS 3.1, both on the OS disks and in the ROM. After this, several [[Unofficial patch]]es appeared which allowed its use on drives after the first 2 GB of a hard disk, using a 64-bit addressing system called ''TrackDisk64'' or TD64 (although the [[2 GB limit]] on file size and the 127 GB limit on partition-sizes remained, as it was a limitation of AmigaOS' <code>dos.library</code> and all then-current Amiga software) and carried the version number of v44. The version of FFS that came with the later official licenced AmigaOS-releases from German distributor [[Haage & Partner]], AmigaOS 3.5 and v3.9 respectively, was v45 – It differed from the former versions in that it used a alternate 64-bit addressing system, called ''New Style Device'' or NSD. More recently in 2003, [[MorphOS]] and [[AmigaOS versions#AmigaOS 4|AmigaOS 4]] have introduced support for a slightly updated "FFS2", by Olaf Barthel (FFS v46, v50 respectively) – This release is compatible with the older FFS. It is [[PowerPC]] native, and introduced further two more DOSTypes: {| class="wikitable" |- ! style="width: 5%"| DOSType ! Type ! style="width: 15%"| AmigaDOS |- | <code>DOS\'''6'''</code> | Addition ''Long Name Filesystem'' (OFS-LNFS) for OFS. Possibility to use long file-names of up to 107 characters for OFS. | MorphOS, AmigaOS v4.0 |- | <code>DOS\'''7'''</code> | Addition ''Long Name Filesystem'' (FFS-LNFS) for FFS. Possibility to use long file-names of up to 107 characters for FFS | MorphOS, {{nowrap|AmigaOS v4.0}} |- |colspan="3" | → There are no directory caching modes available for the aforementioned ''LNFS'' DOSTypes. ''International Mode'' is still inherited by default. These modes for implementing [[Long filename|long file-name-additions]] (LNFs), allows OFS and FFS to hold files with a longer filename (up to 107 characters) than the usual Amiga limits of former OFF-/FFS-releases, which is 31 characters.<ref name=":0" /> |- | colspan="3" style="background-color:#d7dfe4" | '''Note:''' Both ''LNFS''-modes are <u>not</u> forward compatible with earlier versions of FFS, even if the release itself is backwards compatible to former FFS-releases. |} However, despite eventually obtaining additional features and ultimately the ability to use the long filenames, by the time these additions were made, FFS already compared very poorly to other available filesystems on the platforms it was available for. Apart from these extra DOSTypes, there are little or no functional difference between FFS and FFS2 (although some older non-specified bugs may have been dealt with) and should still not be used except for legacy purposes. Disk validation is still necessary in FFS2 (and may still result in data loss) just as it was on FFS, despite early beliefs to the contrary. In September 2018, Hyperion Entertainment released Amiga OS 3.1.4 build upon the Amiga OS 3.1 source. It included an updated FastFileSystem V46 within the Kickstart ROM. The V46 FFS natively supports the APIs for ''TD_64'', ''NSD'', and/or the classic 32-bit ''TD_ storage''-calls. This lets the Amiga OS v3.x use and boot from large media (>4GB) natively, and support >2GB partition sizes. In July 2019, an additional file-based update to FFS was contained in the 3.1.4.1 update.<ref>{{cite web |url=https://www.hyperion-entertainment.com/index.php/news/1-latest-news/280-update-to-amigaos-314-released. |title = Update to AmigaOS 3.1.4 released}}</ref> In May 2021, an updated Amiga OS 3.2 was released<ref>{{cite web |url=https://www.hyperion-entertainment.com/index.php/news |title = News}}</ref> and provided a matching ROM-based V47 FFS update which gained a few minor features and fixes. ==Other implementations== There were few other implementations which are able to read FFS filesystems, which would normally require an Amiga [[emulator]] and a copy of the operating system ROMs to be read. Most notably, support for affs (Amiga Fast File System) can be [[compiler|compiled]] into [[Linux]] [[kernel (operating system)|kernels]], and offers full read, write and format support on FFS and OFS partitions of all dostypes except DOS\6 and DOS\7 (which are probably incredibly rare). On the Amiga, the [[freeware]] application xfs<ref>[http://de4.aminet.net/disk/misc/xfs.readme xfs read me] aminet.net</ref> could, among many filesystems, read and write to devices formatted in OFS or FFS, and was probably the sole Amiga filesystem apart from FFS/FFS2 itself to do so. It did not support DOS\6 or DOS\7, which it predates, or formatting of devices. ==See also== {{Portal|Amiga}} *[[List of file systems]] *[[Amiga Old File System|OFS]] *[[Professional File System]] *[[Smart File System]] ==References== {{Reflist}} ==External links== *[http://lclevy.free.fr/adflib/index.html The ADFlib Page] and precisely [http://lclevy.free.fr/adflib/adf_info.html ADF File specs] *[http://aminet.net/disk/misc/ADFlib.lha The ADF specs], in [[LHA (file format)|LHA]] format from [[Aminet]] {{AmigaOS}} {{MorphOS}} {{File systems}} [[Category:Disk file systems]] [[Category:Amiga]] [[Category:AmigaOS]] [[Category:MorphOS]] [[Category:File systems supported by the Linux kernel]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:AmigaOS
(
edit
)
Template:Cite book
(
edit
)
Template:Cite web
(
edit
)
Template:Distinguish
(
edit
)
Template:File systems
(
edit
)
Template:Infobox filesystem
(
edit
)
Template:MorphOS
(
edit
)
Template:Nowrap
(
edit
)
Template:Portal
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Timeline of release years
(
edit
)
Template:Unreferenced section
(
edit
)
Template:When
(
edit
)