(Note: I consider version numbers as cheap. That means
that I do not like numbers like 0.1 and the like for
things that can be used since quite some time. But
then, 3.1 doesn't mean 'perfectly stable', too.)

Known bugs:
-----------

- Doesn't work on the alpha. The only 64/32-bit
  problem that I'm aware of (pointer/int conversion
  in readdir()) gives compiler warnings but is
  apparently not causing the failure, as directory
  reads basically work (but all files are of size 0).
  Alas, I've got no alpha to debug. :-(

- The partition checker (drivers/block/genhd.c)
  doesn't work with devices which have 256 byte
  blocks (some very old SCSI drives). 

- The feature to automatically make the fs clean
  might leave a trashed file system with the
  bitmap flag set valid.

- The blocks from deleted directories are 
  sometimes reclaimed only at umount time.

Please direct bug reports to: hjw@zvw.de

Version 3.6
-----------

- dentry changes. (Thanks to Jes Sorensen for his help.)

- Fixed bug in balloc(): Superblock was not set dirty after
  the bitmap was changed, so the bitmap wasn't sync'd.

- Fixed nasty bug in find_new_zone(): If the current
  zone number was zero, the loop didn't terminate,
  causing a solid lock-up.

- Removed support for old-style directory reads.

- Fixed bug in add_entry(): When doing a sorted insert,
  the pointer to the next entry in the hash chain wasn't
  correctly byte-swapped. Since most of the users of the
  affs use it on a 68k, they didn't notice. But why did
  I not find this during my tests?

- Fixed some oversights (version wasn't updated on some
  directory changes).

- Handling of hard links rewritten. To the VFS
  they appear now as normal unix links. They are
  now resolved only once in lookup(). The backside
  is that unlink(), rename() and rmdir() have to
  be smart about them, but the result is worth the
  effort. This also led to some code cleanup.

- Changed name type to unsigned char; the test for
  invalid filenames didn't work correctly.
  (Thanks to Michael Krause for pointing at this.)

- Changed mapping of executable flag.

- Changed all network byte-order macros to the
  recommended ones.

- Added a remount function, so attempts to remount
  a dircache filesystem or one with errors read/write
  can be trapped. Previously, ro remounts didn't
  flush the super block, and rw remounts didn't
  create allocation zones ...

- Call shrink_dcache_parent() in rmdir().
  (Thanks to Bill Hawes.)

- Permission checks in unlink().

- Allow mounting of volumes with superfluous
  bitmap pointers read only, also allows them
  to be remounted read/write.

- Owner/Group defaults now to the fs user (i.e.
  the one that mounted it) instead of root. This
  obsoletes the mount options uid and gid.

- Argument to volume option could overflow the
  name buffer. It is now silently truncated to
  30 characters. (Damnit! This kind of bug
  is too embarrassing.)

- Split inode.c into 2 files, the superblock
  routines desperately wanted their own file.

- truncate() didn't allocate an extension block
  cache. If a file was extended by means of
  truncate(), this led to an Oops.

- fsuser is now checked last.

- rename() will not ignore changes in filename
  casing any more (though mv(1) still won't allow
  you to do "mv oldname OldName").

Version 3.5
-----------

- Extension block caches are now allocated on
  demand instead of when a file is opened, as
  files can be read and written without opening
  them (e. g. the loopback device does this).

- Removed an unused function.

Version 3.4
-----------

- Hash chains are now sorted by block numbers.
  (Thanks to Kars de Jong for finding this.)
- Removed all unnecessary external symbols.

Version 3.3
-----------

- Tried to make all types 'correct' and consistent.
- Errors and warnings are now reported via a
  function. They are all prefixed by a severity
  and have the same appearance:
    "AFFS: <function>: <error message>"
  (There's one exception to this, as in that function
  is no pointer to the super block available.)
- The filesystem is remounted read-only after an
  error.
- The names of newly created filesystem objects are
  now checked for validity.
- Minor cleanups in comments.
- Added this Changes file. At last!

Version 3.2
-----------

- Extension block cache: Reading/writing of huge files
  (several MB) is much faster (of course the added
  overhead slows down opening, but this is hardly
  noticeable).
- The same get_block()-routine can now be used for
  both OFS and FFS.
- The super block is now searched in the block that
  was calculated and in the one following. This
  should remedy the round-off error introduced by
  the 1-k blocks that Linux uses.
- Minor changes to adhere to the new VFS interface.
- The number of used blocks is now also calculated
  if the filesystem is mounted read-only.
- Prefixed some constants with AFFS_ to avoid name
  clashes.
- Removed 'EXPERIMENTAL' status.

Version 3.1
-----------

- Fixed a nasty bug which didn't allow read-only
  mounts.
- Allow dir-cache filesystems to be mounted
  read only.
- OFS support.
- Several other changes I just cannot remember
  any more.

Version 3.0
-----------

- Almost complete rewrite for the new VFS
  interface in Linux 1.3.
- Write support.
- Support for hard and symbolic links.
- Lots of things I remember even less ...

Version 2.0
-----------

- Fixed a few things to get it compiled.
- Automatic root block calculation.
- Partition checker for genhd.c

========================================

Let's just call Ray Burr's original affs
'Version 1.0'.
