0001 (Note: I consider version numbers as cheap. That means
0002 that I do not like numbers like 0.1 and the like for
0003 things that can be used since quite some time. But
0004 then, 3.1 doesn't mean 'perfectly stable', too.)
0005
0006 Known bugs:
0007 -----------
0008
0009 - Doesn't work on the alpha. The only 64/32-bit
0010 problem that I'm aware of (pointer/int conversion
0011 in readdir()) gives compiler warnings but is
0012 apparently not causing the failure, as directory
0013 reads basically work (but all files are of size 0).
0014 Alas, I've got no alpha to debug. :-(
0015
0016 - The partition checker (drivers/block/genhd.c)
0017 doesn't work with devices which have 256 byte
0018 blocks (some very old SCSI drives).
0019
0020 - The feature to automatically make the fs clean
0021 might leave a trashed file system with the
0022 bitmap flag set valid.
0023
0024 - When a file is truncated to a size that is not
0025 a multiple of the blocksize, the rest of the
0026 last allocated block is not cleared. Well,
0027 this fs never claimed to be Posix conformant.
0028
0029 Please direct bug reports to: zippel@linux-m68k.org
0030
0031 Version 3.20
0032 ------------
0033 - kill kernel lock
0034 - fix for a possible bitmap corruption
0035
0036 Version 3.19
0037 ------------
0038
0039 - sizeof changes from Kernel Janitor Project
0040 - several bug fixes found with fsx
0041
0042 Version 3.18
0043 ------------
0044
0045 - change to global min macro + warning fixes
0046 - add module tags
0047
0048 Version 3.17
0049 ------------
0050
0051 - locking fixes
0052 - wrong sign in __affs_hash_dentry
0053 - remove unnecessary check in affs_new_inode
0054 - enable international mode for dircache fs
0055
0056 Version 3.16
0057 ------------
0058
0059 - use mark_buffer_dirty_inode instead of mark_buffer_dirty.
0060 - introduce affs_lock_{link|dir|ext}.
0061
0062 Version 3.15
0063 ------------
0064
0065 - disable link to directories until we can properly support them.
0066 - locking fixes for link creation/removal.
0067
0068 Version 3.14
0069 ------------
0070
0071 - correctly cut off long file names for compares
0072 - correctly initialize s_last_bmap
0073
0074 Version 3.13
0075 ------------
0076
0077 Major cleanup for 2.4 [Roman Zippel]
0078 - new extended block handling
0079 - new bitmap allocation functions
0080 - locking should be safe for the future
0081 - cleanup of some interfaces
0082
0083 Version 3.12
0084 ------------
0085
0086 more 2.4 fixes: [Roman Zippel]
0087 - s_lock changes
0088 - increased getblock mess
0089 - clear meta blocks
0090
0091 Version 3.11
0092 ------------
0093
0094 - Converted to use 2.3.x page cache [Dave Jones]
0095 - Corruption in truncate() bugfix [Ken Tyler <kent@werple.net.au>]
0096
0097 Version 3.10
0098 ------------
0099
0100 - Changed partition checker to allow devices
0101 with physical blocks != 512 bytes.
0102
0103 - The partition checker now also ignores the
0104 word at 0xd0 that Windows likes to write to.
0105
0106 Version 3.9
0107 -----------
0108
0109 - Moved cleanup from release_file() to put_inode().
0110 This makes the first one obsolete.
0111
0112 - truncate() zeroes the unused remainder of a
0113 partially used last block when a file is truncated.
0114 It also marks the inode dirty now (which is not
0115 really necessary as notify_change() will do
0116 it anyway).
0117
0118 - Added a few comments, fixed some typos (and
0119 introduced some new ones), made the debug messages
0120 more consistent. Changed a bad example in the
0121 doc file (affs.txt).
0122
0123 - Sets the NOEXEC flag in read_super() for old file
0124 systems, since you can't run programs on them.
0125
0126 Version 3.8
0127 -----------
0128 Bill Hawes kindly reviewed the affs and sent me the
0129 patches he did. They're marked (BH). Thanks, Bill!
0130
0131 - Cleanup of error handling in read_super().
0132 Didn't release all resources in case of an
0133 error. (BH)
0134
0135 - put_inode() releases the ext cache only if it's
0136 no longer needed. (BH)
0137
0138 - One set of dentry callbacks is enough. (BH)
0139
0140 - Cleanup of error handling in namei.c. (BH)
0141
0142 - Cleanup of error handling in file.c. (BH)
0143
0144 - The original blocksize of the device is
0145 restored when the fs is unmounted. (BH)
0146
0147 - getblock() did not invalidate the key cache
0148 when it allocated a new block.
0149
0150 - Removed some unnecessary locks as Bill
0151 suggested.
0152
0153 - Simplified match_name(), changed all hashing
0154 and case insensitive name comparisons to use
0155 uppercase. This makes the tolower() routines
0156 obsolete.
0157
0158 - Added mount option 'mufs' to force muFS
0159 uid/gid interpretation.
0160
0161 - File mode changes were not updated on disk.
0162 This was fixed before, but somehow got lost.
0163
0164 Version 3.7
0165 -----------
0166
0167 - Added dentry callbacks to allow the dcache to
0168 operate case insensitive and length ignorant
0169 like the affs itself.
0170
0171 - getblock() didn't update the lastblock field in the
0172 inode if the fs was not an OFS. This bug only shows
0173 up if a file was enlarged via truncate() and there
0174 was not enough space.
0175
0176 - Remove some more superfluous code left over from
0177 the old link days ...
0178
0179 - Fixed some oversights which were in patch 2.1.78.
0180
0181 - Fixed a few typos.
0182
0183 Version 3.6
0184 -----------
0185
0186 - dentry changes. (Thanks to Jes Sorensen for his help.)
0187
0188 - Fixed bug in balloc(): Superblock was not set dirty after
0189 the bitmap was changed, so the bitmap wasn't sync'd.
0190
0191 - Fixed nasty bug in find_new_zone(): If the current
0192 zone number was zero, the loop didn't terminate,
0193 causing a solid lock-up.
0194
0195 - Removed support for old-style directory reads.
0196
0197 - Fixed bug in add_entry(): When doing a sorted insert,
0198 the pointer to the next entry in the hash chain wasn't
0199 correctly byte-swapped. Since most of the users of the
0200 affs use it on a 68k, they didn't notice. But why did
0201 I not find this during my tests?
0202
0203 - Fixed some oversights (version wasn't updated on some
0204 directory changes).
0205
0206 - Handling of hard links rewritten. To the VFS
0207 they appear now as normal Unix links. They are
0208 now resolved only once in lookup(). The backside
0209 is that unlink(), rename() and rmdir() have to
0210 be smart about them, but the result is worth the
0211 effort. This also led to some code cleanup.
0212
0213 - Changed name type to unsigned char; the test for
0214 invalid filenames didn't work correctly.
0215 (Thanks to Michael Krause for pointing at this.)
0216
0217 - Changed mapping of executable flag.
0218
0219 - Changed all network byte-order macros to the
0220 recommended ones.
0221
0222 - Added a remount function, so attempts to remount
0223 a dircache filesystem or one with errors read/write
0224 can be trapped. Previously, ro remounts didn't
0225 flush the super block, and rw remounts didn't
0226 create allocation zones ...
0227
0228 - Call shrink_dcache_parent() in rmdir().
0229 (Thanks to Bill Hawes.)
0230
0231 - Permission checks in unlink().
0232
0233 - Allow mounting of volumes with superfluous
0234 bitmap pointers read only, also allows them
0235 to be remounted read/write.
0236
0237 - Owner/Group defaults now to the fs user (i.e.
0238 the one that mounted it) instead of root. This
0239 obsoletes the mount options uid and gid.
0240
0241 - Argument to volume option could overflow the
0242 name buffer. It is now silently truncated to
0243 30 characters. (Damn it! This kind of bug
0244 is too embarrassing.)
0245
0246 - Split inode.c into 2 files, the superblock
0247 routines desperately wanted their own file.
0248
0249 - truncate() didn't allocate an extension block
0250 cache. If a file was extended by means of
0251 truncate(), this led to an Oops.
0252
0253 - fsuser is now checked last.
0254
0255 - rename() will not ignore changes in filename
0256 casing any more (though mv(1) still won't allow
0257 you to do "mv oldname OldName").
0258
0259 Version 3.5
0260 -----------
0261
0262 - Extension block caches are now allocated on
0263 demand instead of when a file is opened, as
0264 files can be read and written without opening
0265 them (e. g. the loopback device does this).
0266
0267 - Removed an unused function.
0268
0269 Version 3.4
0270 -----------
0271
0272 - Hash chains are now sorted by block numbers.
0273 (Thanks to Kars de Jong for finding this.)
0274 - Removed all unnecessary external symbols.
0275
0276 Version 3.3
0277 -----------
0278
0279 - Tried to make all types 'correct' and consistent.
0280 - Errors and warnings are now reported via a
0281 function. They are all prefixed by a severity
0282 and have the same appearance:
0283 "AFFS: <function>: <error message>"
0284 (There's one exception to this, as in that function
0285 is no pointer to the super block available.)
0286 - The filesystem is remounted read-only after an
0287 error.
0288 - The names of newly created filesystem objects are
0289 now checked for validity.
0290 - Minor cleanups in comments.
0291 - Added this Changes file. At last!
0292
0293 Version 3.2
0294 -----------
0295
0296 - Extension block cache: Reading/writing of huge files
0297 (several MB) is much faster (of course the added
0298 overhead slows down opening, but this is hardly
0299 noticeable).
0300 - The same get_block()-routine can now be used for
0301 both OFS and FFS.
0302 - The super block is now searched in the block that
0303 was calculated and in the one following. This
0304 should remedy the round-off error introduced by
0305 the 1-k blocks that Linux uses.
0306 - Minor changes to adhere to the new VFS interface.
0307 - The number of used blocks is now also calculated
0308 if the filesystem is mounted read-only.
0309 - Prefixed some constants with AFFS_ to avoid name
0310 clashes.
0311 - Removed 'EXPERIMENTAL' status.
0312
0313 Version 3.1
0314 -----------
0315
0316 - Fixed a nasty bug which didn't allow read-only
0317 mounts.
0318 - Allow dir-cache filesystems to be mounted
0319 read only.
0320 - OFS support.
0321 - Several other changes I just cannot remember
0322 any more.
0323
0324 Version 3.0
0325 -----------
0326
0327 - Almost complete rewrite for the new VFS
0328 interface in Linux 1.3.
0329 - Write support.
0330 - Support for hard and symbolic links.
0331 - Lots of things I remember even less ...
0332
0333 Version 2.0
0334 -----------
0335
0336 - Fixed a few things to get it compiled.
0337 - Automatic root block calculation.
0338 - Partition checker for genhd.c
0339
0340 ========================================
0341
0342 Let's just call Ray Burr's original affs
0343 'Version 1.0'.