18c2ecf20Sopenharmony_ci(Note: I consider version numbers as cheap. That means
28c2ecf20Sopenharmony_cithat I do not like numbers like 0.1 and the like for
38c2ecf20Sopenharmony_cithings that can be used since quite some time. But
48c2ecf20Sopenharmony_cithen, 3.1 doesn't mean 'perfectly stable', too.)
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ciKnown bugs:
78c2ecf20Sopenharmony_ci-----------
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci- Doesn't work on the alpha. The only 64/32-bit
108c2ecf20Sopenharmony_ci  problem that I'm aware of (pointer/int conversion
118c2ecf20Sopenharmony_ci  in readdir()) gives compiler warnings but is
128c2ecf20Sopenharmony_ci  apparently not causing the failure, as directory
138c2ecf20Sopenharmony_ci  reads basically work (but all files are of size 0).
148c2ecf20Sopenharmony_ci  Alas, I've got no alpha to debug. :-(
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci- The partition checker (drivers/block/genhd.c)
178c2ecf20Sopenharmony_ci  doesn't work with devices which have 256 byte
188c2ecf20Sopenharmony_ci  blocks (some very old SCSI drives). 
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci- The feature to automatically make the fs clean
218c2ecf20Sopenharmony_ci  might leave a trashed file system with the
228c2ecf20Sopenharmony_ci  bitmap flag set valid.
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci- When a file is truncated to a size that is not
258c2ecf20Sopenharmony_ci  a multiple of the blocksize, the rest of the
268c2ecf20Sopenharmony_ci  last allocated block is not cleared. Well,
278c2ecf20Sopenharmony_ci  this fs never claimed to be Posix conformant.
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ciPlease direct bug reports to: zippel@linux-m68k.org
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ciVersion 3.20
328c2ecf20Sopenharmony_ci------------
338c2ecf20Sopenharmony_ci- kill kernel lock
348c2ecf20Sopenharmony_ci- fix for a possible bitmap corruption
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ciVersion 3.19
378c2ecf20Sopenharmony_ci------------
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci- sizeof changes from Kernel Janitor Project
408c2ecf20Sopenharmony_ci- several bug fixes found with fsx
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ciVersion 3.18
438c2ecf20Sopenharmony_ci------------
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci- change to global min macro + warning fixes
468c2ecf20Sopenharmony_ci- add module tags
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ciVersion 3.17
498c2ecf20Sopenharmony_ci------------
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ci- locking fixes
528c2ecf20Sopenharmony_ci- wrong sign in __affs_hash_dentry
538c2ecf20Sopenharmony_ci- remove unnecessary check in affs_new_inode
548c2ecf20Sopenharmony_ci- enable international mode for dircache fs
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ciVersion 3.16
578c2ecf20Sopenharmony_ci------------
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci- use mark_buffer_dirty_inode instead of mark_buffer_dirty.
608c2ecf20Sopenharmony_ci- introduce affs_lock_{link|dir|ext}.
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ciVersion 3.15
638c2ecf20Sopenharmony_ci------------
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci- disable link to directories until we can properly support them.
668c2ecf20Sopenharmony_ci- locking fixes for link creation/removal.
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ciVersion 3.14
698c2ecf20Sopenharmony_ci------------
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_ci- correctly cut off long file names for compares
728c2ecf20Sopenharmony_ci- correctly initialize s_last_bmap
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_ciVersion 3.13
758c2ecf20Sopenharmony_ci------------
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_ciMajor cleanup for 2.4 [Roman Zippel]
788c2ecf20Sopenharmony_ci- new extended block handling
798c2ecf20Sopenharmony_ci- new bitmap allocation functions
808c2ecf20Sopenharmony_ci- locking should be safe for the future
818c2ecf20Sopenharmony_ci- cleanup of some interfaces
828c2ecf20Sopenharmony_ci
838c2ecf20Sopenharmony_ciVersion 3.12
848c2ecf20Sopenharmony_ci------------
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_cimore 2.4 fixes: [Roman Zippel]
878c2ecf20Sopenharmony_ci- s_lock changes
888c2ecf20Sopenharmony_ci- increased getblock mess
898c2ecf20Sopenharmony_ci- clear meta blocks 
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ciVersion 3.11
928c2ecf20Sopenharmony_ci------------
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci- Converted to use 2.3.x page cache [Dave Jones]
958c2ecf20Sopenharmony_ci- Corruption in truncate() bugfix [Ken Tyler <kent@werple.net.au>]
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ciVersion 3.10
988c2ecf20Sopenharmony_ci------------
998c2ecf20Sopenharmony_ci
1008c2ecf20Sopenharmony_ci- Changed partition checker to allow devices
1018c2ecf20Sopenharmony_ci  with physical blocks != 512 bytes.
1028c2ecf20Sopenharmony_ci
1038c2ecf20Sopenharmony_ci- The partition checker now also ignores the
1048c2ecf20Sopenharmony_ci  word at 0xd0 that Windows likes to write to.
1058c2ecf20Sopenharmony_ci
1068c2ecf20Sopenharmony_ciVersion 3.9
1078c2ecf20Sopenharmony_ci-----------
1088c2ecf20Sopenharmony_ci
1098c2ecf20Sopenharmony_ci- Moved cleanup from release_file() to put_inode().
1108c2ecf20Sopenharmony_ci  This makes the first one obsolete.
1118c2ecf20Sopenharmony_ci
1128c2ecf20Sopenharmony_ci- truncate() zeroes the unused remainder of a
1138c2ecf20Sopenharmony_ci  partially used last block when a file is truncated.
1148c2ecf20Sopenharmony_ci  It also marks the inode dirty now (which is not
1158c2ecf20Sopenharmony_ci  really necessary as notify_change() will do
1168c2ecf20Sopenharmony_ci  it anyway).
1178c2ecf20Sopenharmony_ci
1188c2ecf20Sopenharmony_ci- Added a few comments, fixed some typos (and
1198c2ecf20Sopenharmony_ci  introduced some new ones), made the debug messages
1208c2ecf20Sopenharmony_ci  more consistent. Changed a bad example in the
1218c2ecf20Sopenharmony_ci  doc file (affs.txt).
1228c2ecf20Sopenharmony_ci
1238c2ecf20Sopenharmony_ci- Sets the NOEXEC flag in read_super() for old file
1248c2ecf20Sopenharmony_ci  systems, since you can't run programs on them.
1258c2ecf20Sopenharmony_ci
1268c2ecf20Sopenharmony_ciVersion 3.8
1278c2ecf20Sopenharmony_ci-----------
1288c2ecf20Sopenharmony_ciBill Hawes kindly reviewed the affs and sent me the
1298c2ecf20Sopenharmony_cipatches he did. They're marked (BH). Thanks, Bill!
1308c2ecf20Sopenharmony_ci
1318c2ecf20Sopenharmony_ci- Cleanup of error handling in read_super().
1328c2ecf20Sopenharmony_ci  Didn't release all resources in case of an
1338c2ecf20Sopenharmony_ci  error. (BH)
1348c2ecf20Sopenharmony_ci
1358c2ecf20Sopenharmony_ci- put_inode() releases the ext cache only if it's
1368c2ecf20Sopenharmony_ci  no longer needed. (BH)
1378c2ecf20Sopenharmony_ci
1388c2ecf20Sopenharmony_ci- One set of dentry callbacks is enough. (BH)
1398c2ecf20Sopenharmony_ci
1408c2ecf20Sopenharmony_ci- Cleanup of error handling in namei.c. (BH)
1418c2ecf20Sopenharmony_ci
1428c2ecf20Sopenharmony_ci- Cleanup of error handling in file.c. (BH)
1438c2ecf20Sopenharmony_ci
1448c2ecf20Sopenharmony_ci- The original blocksize of the device is
1458c2ecf20Sopenharmony_ci  restored when the fs is unmounted. (BH)
1468c2ecf20Sopenharmony_ci
1478c2ecf20Sopenharmony_ci- getblock() did not invalidate the key cache
1488c2ecf20Sopenharmony_ci  when it allocated a new block.
1498c2ecf20Sopenharmony_ci
1508c2ecf20Sopenharmony_ci- Removed some unnecessary locks as Bill
1518c2ecf20Sopenharmony_ci  suggested.
1528c2ecf20Sopenharmony_ci
1538c2ecf20Sopenharmony_ci- Simplified match_name(), changed all hashing
1548c2ecf20Sopenharmony_ci  and case insensitive name comparisons to use
1558c2ecf20Sopenharmony_ci  uppercase. This makes the tolower() routines
1568c2ecf20Sopenharmony_ci  obsolete.
1578c2ecf20Sopenharmony_ci
1588c2ecf20Sopenharmony_ci- Added mount option 'mufs' to force muFS
1598c2ecf20Sopenharmony_ci  uid/gid interpretation.
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_ci- File mode changes were not updated on disk.
1628c2ecf20Sopenharmony_ci  This was fixed before, but somehow got lost.
1638c2ecf20Sopenharmony_ci
1648c2ecf20Sopenharmony_ciVersion 3.7
1658c2ecf20Sopenharmony_ci-----------
1668c2ecf20Sopenharmony_ci
1678c2ecf20Sopenharmony_ci- Added dentry callbacks to allow the dcache to
1688c2ecf20Sopenharmony_ci  operate case insensitive and length ignorant
1698c2ecf20Sopenharmony_ci  like the affs itself.
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ci- getblock() didn't update the lastblock field in the
1728c2ecf20Sopenharmony_ci  inode if the fs was not an OFS. This bug only shows
1738c2ecf20Sopenharmony_ci  up if a file was enlarged via truncate() and there
1748c2ecf20Sopenharmony_ci  was not enough space.
1758c2ecf20Sopenharmony_ci
1768c2ecf20Sopenharmony_ci- Remove some more superfluous code left over from
1778c2ecf20Sopenharmony_ci  the old link days ...
1788c2ecf20Sopenharmony_ci
1798c2ecf20Sopenharmony_ci- Fixed some oversights which were in patch 2.1.78.
1808c2ecf20Sopenharmony_ci
1818c2ecf20Sopenharmony_ci- Fixed a few typos.
1828c2ecf20Sopenharmony_ci
1838c2ecf20Sopenharmony_ciVersion 3.6
1848c2ecf20Sopenharmony_ci-----------
1858c2ecf20Sopenharmony_ci
1868c2ecf20Sopenharmony_ci- dentry changes. (Thanks to Jes Sorensen for his help.)
1878c2ecf20Sopenharmony_ci
1888c2ecf20Sopenharmony_ci- Fixed bug in balloc(): Superblock was not set dirty after
1898c2ecf20Sopenharmony_ci  the bitmap was changed, so the bitmap wasn't sync'd.
1908c2ecf20Sopenharmony_ci
1918c2ecf20Sopenharmony_ci- Fixed nasty bug in find_new_zone(): If the current
1928c2ecf20Sopenharmony_ci  zone number was zero, the loop didn't terminate,
1938c2ecf20Sopenharmony_ci  causing a solid lock-up.
1948c2ecf20Sopenharmony_ci
1958c2ecf20Sopenharmony_ci- Removed support for old-style directory reads.
1968c2ecf20Sopenharmony_ci
1978c2ecf20Sopenharmony_ci- Fixed bug in add_entry(): When doing a sorted insert,
1988c2ecf20Sopenharmony_ci  the pointer to the next entry in the hash chain wasn't
1998c2ecf20Sopenharmony_ci  correctly byte-swapped. Since most of the users of the
2008c2ecf20Sopenharmony_ci  affs use it on a 68k, they didn't notice. But why did
2018c2ecf20Sopenharmony_ci  I not find this during my tests?
2028c2ecf20Sopenharmony_ci
2038c2ecf20Sopenharmony_ci- Fixed some oversights (version wasn't updated on some
2048c2ecf20Sopenharmony_ci  directory changes).
2058c2ecf20Sopenharmony_ci
2068c2ecf20Sopenharmony_ci- Handling of hard links rewritten. To the VFS
2078c2ecf20Sopenharmony_ci  they appear now as normal Unix links. They are
2088c2ecf20Sopenharmony_ci  now resolved only once in lookup(). The backside
2098c2ecf20Sopenharmony_ci  is that unlink(), rename() and rmdir() have to
2108c2ecf20Sopenharmony_ci  be smart about them, but the result is worth the
2118c2ecf20Sopenharmony_ci  effort. This also led to some code cleanup.
2128c2ecf20Sopenharmony_ci
2138c2ecf20Sopenharmony_ci- Changed name type to unsigned char; the test for
2148c2ecf20Sopenharmony_ci  invalid filenames didn't work correctly.
2158c2ecf20Sopenharmony_ci  (Thanks to Michael Krause for pointing at this.)
2168c2ecf20Sopenharmony_ci
2178c2ecf20Sopenharmony_ci- Changed mapping of executable flag.
2188c2ecf20Sopenharmony_ci
2198c2ecf20Sopenharmony_ci- Changed all network byte-order macros to the
2208c2ecf20Sopenharmony_ci  recommended ones.
2218c2ecf20Sopenharmony_ci
2228c2ecf20Sopenharmony_ci- Added a remount function, so attempts to remount
2238c2ecf20Sopenharmony_ci  a dircache filesystem or one with errors read/write
2248c2ecf20Sopenharmony_ci  can be trapped. Previously, ro remounts didn't
2258c2ecf20Sopenharmony_ci  flush the super block, and rw remounts didn't
2268c2ecf20Sopenharmony_ci  create allocation zones ...
2278c2ecf20Sopenharmony_ci
2288c2ecf20Sopenharmony_ci- Call shrink_dcache_parent() in rmdir().
2298c2ecf20Sopenharmony_ci  (Thanks to Bill Hawes.)
2308c2ecf20Sopenharmony_ci
2318c2ecf20Sopenharmony_ci- Permission checks in unlink().
2328c2ecf20Sopenharmony_ci
2338c2ecf20Sopenharmony_ci- Allow mounting of volumes with superfluous
2348c2ecf20Sopenharmony_ci  bitmap pointers read only, also allows them
2358c2ecf20Sopenharmony_ci  to be remounted read/write.
2368c2ecf20Sopenharmony_ci
2378c2ecf20Sopenharmony_ci- Owner/Group defaults now to the fs user (i.e.
2388c2ecf20Sopenharmony_ci  the one that mounted it) instead of root. This
2398c2ecf20Sopenharmony_ci  obsoletes the mount options uid and gid.
2408c2ecf20Sopenharmony_ci
2418c2ecf20Sopenharmony_ci- Argument to volume option could overflow the
2428c2ecf20Sopenharmony_ci  name buffer. It is now silently truncated to
2438c2ecf20Sopenharmony_ci  30 characters. (Damn it! This kind of bug
2448c2ecf20Sopenharmony_ci  is too embarrassing.)
2458c2ecf20Sopenharmony_ci
2468c2ecf20Sopenharmony_ci- Split inode.c into 2 files, the superblock
2478c2ecf20Sopenharmony_ci  routines desperately wanted their own file.
2488c2ecf20Sopenharmony_ci
2498c2ecf20Sopenharmony_ci- truncate() didn't allocate an extension block
2508c2ecf20Sopenharmony_ci  cache. If a file was extended by means of
2518c2ecf20Sopenharmony_ci  truncate(), this led to an Oops.
2528c2ecf20Sopenharmony_ci
2538c2ecf20Sopenharmony_ci- fsuser is now checked last.
2548c2ecf20Sopenharmony_ci
2558c2ecf20Sopenharmony_ci- rename() will not ignore changes in filename
2568c2ecf20Sopenharmony_ci  casing any more (though mv(1) still won't allow
2578c2ecf20Sopenharmony_ci  you to do "mv oldname OldName").
2588c2ecf20Sopenharmony_ci
2598c2ecf20Sopenharmony_ciVersion 3.5
2608c2ecf20Sopenharmony_ci-----------
2618c2ecf20Sopenharmony_ci
2628c2ecf20Sopenharmony_ci- Extension block caches are now allocated on
2638c2ecf20Sopenharmony_ci  demand instead of when a file is opened, as
2648c2ecf20Sopenharmony_ci  files can be read and written without opening
2658c2ecf20Sopenharmony_ci  them (e. g. the loopback device does this).
2668c2ecf20Sopenharmony_ci
2678c2ecf20Sopenharmony_ci- Removed an unused function.
2688c2ecf20Sopenharmony_ci
2698c2ecf20Sopenharmony_ciVersion 3.4
2708c2ecf20Sopenharmony_ci-----------
2718c2ecf20Sopenharmony_ci
2728c2ecf20Sopenharmony_ci- Hash chains are now sorted by block numbers.
2738c2ecf20Sopenharmony_ci  (Thanks to Kars de Jong for finding this.)
2748c2ecf20Sopenharmony_ci- Removed all unnecessary external symbols.
2758c2ecf20Sopenharmony_ci
2768c2ecf20Sopenharmony_ciVersion 3.3
2778c2ecf20Sopenharmony_ci-----------
2788c2ecf20Sopenharmony_ci
2798c2ecf20Sopenharmony_ci- Tried to make all types 'correct' and consistent.
2808c2ecf20Sopenharmony_ci- Errors and warnings are now reported via a
2818c2ecf20Sopenharmony_ci  function. They are all prefixed by a severity
2828c2ecf20Sopenharmony_ci  and have the same appearance:
2838c2ecf20Sopenharmony_ci    "AFFS: <function>: <error message>"
2848c2ecf20Sopenharmony_ci  (There's one exception to this, as in that function
2858c2ecf20Sopenharmony_ci  is no pointer to the super block available.)
2868c2ecf20Sopenharmony_ci- The filesystem is remounted read-only after an
2878c2ecf20Sopenharmony_ci  error.
2888c2ecf20Sopenharmony_ci- The names of newly created filesystem objects are
2898c2ecf20Sopenharmony_ci  now checked for validity.
2908c2ecf20Sopenharmony_ci- Minor cleanups in comments.
2918c2ecf20Sopenharmony_ci- Added this Changes file. At last!
2928c2ecf20Sopenharmony_ci
2938c2ecf20Sopenharmony_ciVersion 3.2
2948c2ecf20Sopenharmony_ci-----------
2958c2ecf20Sopenharmony_ci
2968c2ecf20Sopenharmony_ci- Extension block cache: Reading/writing of huge files
2978c2ecf20Sopenharmony_ci  (several MB) is much faster (of course the added
2988c2ecf20Sopenharmony_ci  overhead slows down opening, but this is hardly
2998c2ecf20Sopenharmony_ci  noticeable).
3008c2ecf20Sopenharmony_ci- The same get_block()-routine can now be used for
3018c2ecf20Sopenharmony_ci  both OFS and FFS.
3028c2ecf20Sopenharmony_ci- The super block is now searched in the block that
3038c2ecf20Sopenharmony_ci  was calculated and in the one following. This
3048c2ecf20Sopenharmony_ci  should remedy the round-off error introduced by
3058c2ecf20Sopenharmony_ci  the 1-k blocks that Linux uses.
3068c2ecf20Sopenharmony_ci- Minor changes to adhere to the new VFS interface.
3078c2ecf20Sopenharmony_ci- The number of used blocks is now also calculated
3088c2ecf20Sopenharmony_ci  if the filesystem is mounted read-only.
3098c2ecf20Sopenharmony_ci- Prefixed some constants with AFFS_ to avoid name
3108c2ecf20Sopenharmony_ci  clashes.
3118c2ecf20Sopenharmony_ci- Removed 'EXPERIMENTAL' status.
3128c2ecf20Sopenharmony_ci
3138c2ecf20Sopenharmony_ciVersion 3.1
3148c2ecf20Sopenharmony_ci-----------
3158c2ecf20Sopenharmony_ci
3168c2ecf20Sopenharmony_ci- Fixed a nasty bug which didn't allow read-only
3178c2ecf20Sopenharmony_ci  mounts.
3188c2ecf20Sopenharmony_ci- Allow dir-cache filesystems to be mounted
3198c2ecf20Sopenharmony_ci  read only.
3208c2ecf20Sopenharmony_ci- OFS support.
3218c2ecf20Sopenharmony_ci- Several other changes I just cannot remember
3228c2ecf20Sopenharmony_ci  any more.
3238c2ecf20Sopenharmony_ci
3248c2ecf20Sopenharmony_ciVersion 3.0
3258c2ecf20Sopenharmony_ci-----------
3268c2ecf20Sopenharmony_ci
3278c2ecf20Sopenharmony_ci- Almost complete rewrite for the new VFS
3288c2ecf20Sopenharmony_ci  interface in Linux 1.3.
3298c2ecf20Sopenharmony_ci- Write support.
3308c2ecf20Sopenharmony_ci- Support for hard and symbolic links.
3318c2ecf20Sopenharmony_ci- Lots of things I remember even less ...
3328c2ecf20Sopenharmony_ci
3338c2ecf20Sopenharmony_ciVersion 2.0
3348c2ecf20Sopenharmony_ci-----------
3358c2ecf20Sopenharmony_ci
3368c2ecf20Sopenharmony_ci- Fixed a few things to get it compiled.
3378c2ecf20Sopenharmony_ci- Automatic root block calculation.
3388c2ecf20Sopenharmony_ci- Partition checker for genhd.c
3398c2ecf20Sopenharmony_ci
3408c2ecf20Sopenharmony_ci========================================
3418c2ecf20Sopenharmony_ci
3428c2ecf20Sopenharmony_ciLet's just call Ray Burr's original affs
3438c2ecf20Sopenharmony_ci'Version 1.0'.
344