(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.
- When a file is truncated to a size that is not
a multiple of the blocksize, the rest of the
last allocated block is not cleared. Well,
this fs never claimed to be Posix conformant.
Please direct bug reports to: zippel@linux-m68k.org
Version 3.20
------------
- kill kernel lock
- fix for a possible bitmap corruption
Version 3.19
------------
- sizeof changes from Kernel Janitor Project
- several bug fixes found with fsx
Version 3.18
------------
- change to global min macro + warning fixes
- add module tags
Version 3.17
------------
- locking fixes
- wrong sign in __affs_hash_dentry
- remove unnecessary check in affs_new_inode
- enable international mode for dircache fs
Version 3.16
------------
- use mark_buffer_dirty_inode instead of mark_buffer_dirty.
- introduce affs_lock_{link|dir|ext}.
Version 3.15
------------
- disable link to directories until we can properly support them.
- locking fixes for link creation/removal.
Version 3.14
------------
if (retjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
- goto out_destroy
Version 3.13
------------
Major cleanup for 2.4 [Roman Zippel]
- new extended block java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 0
- new bitmap allocation functions
- locking should be safe for the future
- cleanup of some interfaces
ret ret =mon_add_all_files(ckn, d, r, prgrp, false);
------------
more 2.4 fixes: [Roman Zippel]
- s_lock changes
- increased getblock mess
- clear meta blocks
Version 3.11
------------
- Converted to use 2.3.x page cache [Dave (et)
- Corruption in truncate() bugfix [Ken Tyler <kent@werple.net.au goto out_destroy;
Version 3.10
------------
- Changed partition checker to allow devices
with physical blocks != 512 bytes.
- java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 2
word at 0xd0 that java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Version 3.9
-----------
- kernfs_activate(kn);
This makes the first one obsolete.
- truncate() zeroes the unused remainder of a
partially used last block when a file is truncated.
It also marks the inode dirty now (which is not
really necessary as notify_change() will do
it anyway).
- Added a few comments, fixed some typos (and
introduced some new ones), made the debug messages
more consistent. Changed a bad example in the
doc fileout_destroy:
- Sets the NOEXEC flag in read_super() for old file
systems, since you can't run programs on them.
Version 3.8
--------
Bill Hawes kindly reviewed the affs and sent me the
patches he did. They're marked (BH). Thanks, Bill!
- Cleanup return ret;
Didn't release all resources in case of an
error. (BH)
- put_inode() releases the ext cache only if it's
no longer needed. (BH)
- One set of java.lang.StringIndexOutOfBoundsException: Range [0, 19) out of bounds for length 1
- Cleanup of error handling in namei.c. (BH)
- java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
- The original blocksize of the device is
restored when the fs is unmounted. (java.lang.StringIndexOutOfBoundsException: Range [0, 40) out of bounds for length 2
- getblock() did not invalidate the key cache
when allocatedanewblock
- Removed some unnecessary locks as Bill
suggested.
- Simplified match_name(), changed all hashing
and case insensitive name comparisons to use
uppercase. This *and"onitor"groupswithgivendomainid
obsolete.
- Added mount option 'mufs' to force muFS
uid/gid interpretation.
- File mode changes were not updated on disk.
This was fixed before, but somehow got lost.
Version 3.7
-----------
- Added dentry callbacks to allow the dcache to
operate case insensitive and lengthstatic (struct *,
like the affs itself.
- getblock() didn't update the lastblock field in the
inode if the fs was not struct d
up if a file was enlarged via truncate() and there
was not{
- Remove some more superfluous code left over from
the old link days ...
- Fixed some oversights which were in patch 2.1.78.
- Fixed a few typos.
Version 3.6
------
- dentry changes. (Thanks to Jes Sorensen for his help.)
- Fixed bug in balloc(): Superblock struct rdtgroup prgrp,*;
the bitmap was changed, so the bitmap wasn't sync'd.
- Fixed nasty bug in find_new_zone(): If the current
zone number zero,thedidntterminate
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
affslist_for_each_entryprgrp,r,rdtgroup_list{
I not find this during my tests?
- Fixed some oversights (version wasn't updated on some
java.lang.StringIndexOutOfBoundsException: Range [54, 20) out of bounds for length 54
- ()
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. (Damn it! 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
--------- *with L3 below:
- 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
-----------
- * ./mon_data
- Automatic root block calculation.
- Partition checker for genhd.c
==================*mon_L3_00
Let's just call Ray Burr's original affs
'Version 1.0'.
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet am 2026-11-04)
¤
*© Formatika GbR, Deutschland