-------------------- AmigaOS 3.5/3.9 project ------------------------- The following changes have been made in V45.2 (6.4.2000) - If the partition is beyond the 4GB barrier, and NSD64 detection fails, the FFS now falls back to TD64 commands. Of course, if the device does not speak TD64 either, the FFS is out of luck, but at least you will be able to use large disks and mount large disks without any additional patches in the system. - Users can now enforce that disks are handled as removable media and their sizes are recognized automatically. Prior releases enabled this feature only for the trackdisk.device, for the carddisk.device and all NSD64 capable devices. To enable this feature, users need to set "LowCyl = 0" in the mount list (a requirement anyhow, as the whole disk is to be used for storage, and not just a partition), and "Surfaces = 0". Note that this is an invalid layout (a disk without surfaces), and FFS will fill in the correct values as soon as a disk is mounted. To keep FFS from doing stupid things on such an invalid disk, the number of surfaces is internally set to 2 (the standard floppy layout) until the disk layout can be recognized. Users, beware: For this to work, the device needs to support TD_GETGEOMETRY. While most "modern" devices do, some very old devices do not and hence cannot be used with "Surfaces = 0" safely. - Inlined calls to utility/UDivMod32. - Removed the envoy-support functions, mostly due to lack of suitable includes and .fd files of the "accounts.library." The following changes have been made in V45.3 (6.5.2000) - In order to support removable disks in a better and more compatible way, the version 45.3 first attempts to use HD_SCSICMD to identify external disks and to determine their capacity. If that fails, it falls back to the old style TD_GETGEOMETRY function. NSD support is not required to make this mechanism work. The following changes have been made in V45.4 (8.5.2000) - To also allow legacy devices use large disks, the FFS can now also make use of HDSCSICmd instead of the trackdisk commands to read and write sectors. For that, set the bit 7 of the DOS type of the filing system. For example, the dos type 0x444f5383 indicates an international filing system with HD-SCSICmd interface. -------------------- AmigaOS 3.1.4.(1) project ----------------------- The following changes have been made in V45.15 (4.1.2017) - Bumped the version number beyond the 3.9 versions to properly mirror the development stage. No functional changes. The following changes have been made in V45.16 (21.1.2017) - The restart module now also uses MODE_SENSE to get an idea on the sector size and the number of sectors. Apparently, some optical storage devices do not implement READ_CAPACITY. The following changes have been made in V45.17 (23.1.2017) - Temporary memory allocated by the validator was not properly released, the allocation size did not fit to the release size (and neither fitted to the required size!). - Computation of the number of bitmaps had an off-by-one error. It started from the last block, not the number of blocks (difference between index and count!) - The same bug was also contained in the validator: lastblock is an index, not a count, so the buffer size was off by one. - Allocating now much more memory for EasyRequest(), actually 4K+512 bytes. Any smaller size would make intuition to switch stacks again, requiring then 8K instead of 4K buffer. The following changes have been made in V45.18 (22.3.2017) - SCSI_DIRECT access is now enabled differently, namely by setting bit 16 of the Interleave environment element. Bit 7 of DosType has been phased out. - Bit 17 of Interleave now enables superfloppy support, i.e. the FFS queries the device geometry itself. Setting surfaces = 0 still works but should probably remain undocumented. - Bit 18 of the interleave entry disables the potentially dangerous NSDCMD_QUERY and falls back to TD64 directly without testing NSD. - Handling of LUNs was broken for DIRECT_SCSI access. It now takes the tenth's digit of the unit number to address the LUN (as suggested by the CBM documentation). - Due to an oversight, DIRECT_SCSI removable disks caused an FFS crash in case a disk change was detected. The following changes have been made in V45.19 (29.4.2019) - This release adds experimental support for long file names (up to 54 characters). This was actually already there, partially, but never enabled. - Fixed a potential leak due to not setting the header key of a cache block correctly. The following changes have been made in V45.20 (26.5.2017) - Reworked ACTION_READ_LINK which was massively broken: A partial path upfront the current link position in a path was ignored. A unqualified ':' at the start of the soft link did not insert the volume name to ensure that the host program follows the path on the current volume instead of its own root volume. A slash at the end of the link would have resulted in a double slash after link resolution, identifying erroneously the parent directory. Even though the size of a target buffer for link resolution was given, this size was completely ignored, resulting in potential buffer overruns. A user path name longer than 256 characters would have crashed the FFS due to an internal buffer overrun. Now it errors (at least.) The following changes have been made in V45.21 (30.7.2017) - EXALL and EXAMINE/EXNEXT filled in nonsense into the fib_FileNote field if the directory root was examined. - If a rename on a directory caching enabled filing system failed due to lack of storage on the disk, the code failed to re-insert the object under its old key, making the object unaccessible and additionally creating a memory leak. - ACTION_SET_COMMENT could not set comments on hardlinks. Instead, it always set the comment on the link target, which is not very useful. The following changes have been made in V46.1 (31.7.2017) - This is an experimental release that adds support for DOS\06 and DOS\07, namely long file name support in OFS and FFS fashion with separate extension blocks in case the combined length of filename and comment grow too large. While this release is (somewhat) debugged, I would not recommend this version for production purposes as the co-routine handling of the FFS is somewhat tricky and may have impact on the implementation of long comment handling. The following changes have been made in V46.2 (16.9.2017) - ACTION_SET_DATE did not operate on the root directory and hence could not change its "last modification date", unlike for all other directories. Fixed. The following changes have been made in V46.3 (17.11.2017) - ACTION_OPEN_FROM_LOCK could have leaked memory if the creation of the file handle failed in the middle. - This version of the FFS is smart enough to install itself into the FileSystem.resource if the harddisk controller does not do it, so once loaded, it becomes immediately available to all other devices. - By major trickery, the FFS can now operate both with GlobVec = 0 and GlobVec = -1, i.e. both as BCPL and C version. The following changes have been made in V46.4 (17.11.2017) - Forgot to add the right version number in the file system resource. - The seglist given to the FileSytem.resouce is now also agnostic to BCPL vs. C startup. The following changes have been made in V46.5 (6.12.2017) - Modifying the FileSystem.resource is now Forbid()-locked. The following changes have been made in V46.6 (16.12.2017) - RELABEL and FORMAT checked against the wrong file name size. Note that volume labels are still limited to 30 characters, not the full file name size as the administration is somewhat different in the root block. The following changes have been made in V46.7 (18.12.2017) - The validator did not special-case the root block in the DOS6/DOS7 variant, causing potentially a bad-block error. The following changes have been made in V46.8 (19.12.2017) - The same special-casing was also missing on object creation for the parent directory and Examine on the root block. Fixed! The following changes have been made in V46.9 (19.1.2018) - The FFS will now bring up a requester in case validation fails due to out of memory situations. The following changes have been made in V46.10 (24.1.2018) - Failure of memory allocation in the disk validator can now be retried, though success is probably unlikely if the disk is too large. The following changes have been made in V46.11 (20.2.2018) - The interpretation of the SCSI mode page to interpret the layout of the disk was just plain wrong as it forgot to skip the SCSI page headers and block descriptors. Fixed this. The following changes have been made in V46.12 (23.3.2018) - There was still one inverted logic in the SCSI geometry interpretation that made the code not use the SCSI rigid disk page. Fixed. - SCSI geometry parsing is now only used if SCSI Direct is turned on. Otherwise, the code falls back to TD_GETGEOMETRY. The following changes have been made in V46.13 (23.9.2018) - The DirectSCSI init function accessed a word item on an odd byte boundary and hence crashed on an 68000. Fixed. The following changes have been made in V46.14 (22.10.2018) - Re-reading the bitmap is now started after the change interrupt is registered. This is a workaround for the omniscsi.device which does not return the proper disk status upon a TD_CHANGESTATE initially. The following changes have been made in V46.15 (5.1.2019) - Since TD_CHANGESTATE does not return reliable information for the omniscsi.device even after a change interrupt has been registered, the FFS now manually triggers a disk-read to wake up the device and let it register the diskchange task. - The restart code and the bitmap reader called AllocMem() and FreeMem() for each block they read, which is needlessly wasteful. Now, the memory is allocated only once and released at the end. - ACTION_FORMAT for long file name file systems (DOS\06 and DOS\07) wrote directory caching information even though this information is of course never used or needed later on. The following changes have been made in V46.16 (10.1.2019) - The startup packet is now replied only after Restart has been called, thus delaying the startup of any other filing system. This may avoid disk- trashing in case several partitions are mounted on the same drive. - Bitmap extension blocks and bitmaps are now allocated in block-sequential order if possible. This may enable future optimizations, though currently does not make any difference. The following changes have been made in V46.18 (25.5.2019) - Re-implemented the bitmap allocation algorithm again, but this time in a lot simpler and more orthogonal way. The following changes have been made in V46.20 (7.6.2019) - The patch flags for the file system have been altered to also include a larger stack size, and to signal a C type mount. ----------------------- AmigaOS 3.2 project -------------------------- The following changes have been made in V47.1: - Bumped to 47.1 to be consistent with the rest of the Os and to avoid warnings from LoadModule. The following changes have been made in V47.2: - Implemented ACTION_DIE to safely shut down a file system. Also fixes a memory leak in case creating the file system failed at some point. Note that this requires a new workbench as the current one will deadlock in case a device is removed that was present at its creation. The following changes have been made in V47.3: - An attempt to ExNext or ExAll through the root lock (lock = 0) caused hits as the code attempted to store side information within the lock. As this cannot work, an attempt to try such an operation fails now. fs 47.4 (16.6.2020) - Added "trackfile.device" as yet another name of a device with trackdisk.device-like behaviour which does not crash instantly when processing the TD_GETGEOMETRY command.