1 (Note: I consider version numbers as cheap. Th 1 (Note: I consider version numbers as cheap. That means 2 that I do not like numbers like 0.1 and the li 2 that I do not like numbers like 0.1 and the like for 3 things that can be used since quite some time. 3 things that can be used since quite some time. But 4 then, 3.1 doesn't mean 'perfectly stable', too 4 then, 3.1 doesn't mean 'perfectly stable', too.) 5 5 6 Known bugs: 6 Known bugs: 7 ----------- 7 ----------- 8 8 9 - Doesn't work on the alpha. The only 64/32-bi 9 - Doesn't work on the alpha. The only 64/32-bit 10 problem that I'm aware of (pointer/int conve 10 problem that I'm aware of (pointer/int conversion 11 in readdir()) gives compiler warnings but is 11 in readdir()) gives compiler warnings but is 12 apparently not causing the failure, as direc 12 apparently not causing the failure, as directory 13 reads basically work (but all files are of s 13 reads basically work (but all files are of size 0). 14 Alas, I've got no alpha to debug. :-( 14 Alas, I've got no alpha to debug. :-( 15 15 16 - The partition checker (drivers/block/genhd.c 16 - The partition checker (drivers/block/genhd.c) 17 doesn't work with devices which have 256 byt 17 doesn't work with devices which have 256 byte 18 blocks (some very old SCSI drives). 18 blocks (some very old SCSI drives). 19 19 20 - The feature to automatically make the fs cle 20 - The feature to automatically make the fs clean 21 might leave a trashed file system with the 21 might leave a trashed file system with the 22 bitmap flag set valid. 22 bitmap flag set valid. 23 23 24 - When a file is truncated to a size that is n 24 - When a file is truncated to a size that is not 25 a multiple of the blocksize, the rest of the 25 a multiple of the blocksize, the rest of the 26 last allocated block is not cleared. Well, 26 last allocated block is not cleared. Well, 27 this fs never claimed to be Posix conformant 27 this fs never claimed to be Posix conformant. 28 28 29 Please direct bug reports to: zippel@linux-m68 29 Please direct bug reports to: zippel@linux-m68k.org 30 30 31 Version 3.20 << 32 ------------ << 33 - kill kernel lock << 34 - fix for a possible bitmap corruption << 35 << 36 Version 3.19 31 Version 3.19 37 ------------ 32 ------------ 38 33 39 - sizeof changes from Kernel Janitor Project 34 - sizeof changes from Kernel Janitor Project 40 - several bug fixes found with fsx 35 - several bug fixes found with fsx 41 36 42 Version 3.18 37 Version 3.18 43 ------------ 38 ------------ 44 39 45 - change to global min macro + warning fixes 40 - change to global min macro + warning fixes 46 - add module tags 41 - add module tags 47 42 48 Version 3.17 43 Version 3.17 49 ------------ 44 ------------ 50 45 51 - locking fixes 46 - locking fixes 52 - wrong sign in __affs_hash_dentry 47 - wrong sign in __affs_hash_dentry 53 - remove unnecessary check in affs_new_inode 48 - remove unnecessary check in affs_new_inode 54 - enable international mode for dircache fs 49 - enable international mode for dircache fs 55 50 56 Version 3.16 51 Version 3.16 57 ------------ 52 ------------ 58 53 59 - use mark_buffer_dirty_inode instead of mark_ 54 - use mark_buffer_dirty_inode instead of mark_buffer_dirty. 60 - introduce affs_lock_{link|dir|ext}. 55 - introduce affs_lock_{link|dir|ext}. 61 56 62 Version 3.15 57 Version 3.15 63 ------------ 58 ------------ 64 59 65 - disable link to directories until we can pro 60 - disable link to directories until we can properly support them. 66 - locking fixes for link creation/removal. 61 - locking fixes for link creation/removal. 67 62 68 Version 3.14 63 Version 3.14 69 ------------ 64 ------------ 70 65 71 - correctly cut off long file names for compar 66 - correctly cut off long file names for compares 72 - correctly initialize s_last_bmap 67 - correctly initialize s_last_bmap 73 68 74 Version 3.13 69 Version 3.13 75 ------------ 70 ------------ 76 71 77 Major cleanup for 2.4 [Roman Zippel] 72 Major cleanup for 2.4 [Roman Zippel] 78 - new extended block handling 73 - new extended block handling 79 - new bitmap allocation functions 74 - new bitmap allocation functions 80 - locking should be safe for the future 75 - locking should be safe for the future 81 - cleanup of some interfaces 76 - cleanup of some interfaces 82 77 83 Version 3.12 78 Version 3.12 84 ------------ 79 ------------ 85 80 86 more 2.4 fixes: [Roman Zippel] 81 more 2.4 fixes: [Roman Zippel] 87 - s_lock changes 82 - s_lock changes 88 - increased getblock mess 83 - increased getblock mess 89 - clear meta blocks 84 - clear meta blocks 90 85 91 Version 3.11 86 Version 3.11 92 ------------ 87 ------------ 93 88 94 - Converted to use 2.3.x page cache [Dave Jone !! 89 - Converted to use 2.3.x page cache [Dave Jones <dave@powertweak.com>] 95 - Corruption in truncate() bugfix [Ken Tyler <k 90 - Corruption in truncate() bugfix [Ken Tyler <kent@werple.net.au>] 96 91 97 Version 3.10 92 Version 3.10 98 ------------ 93 ------------ 99 94 100 - Changed partition checker to allow devices 95 - Changed partition checker to allow devices 101 with physical blocks != 512 bytes. 96 with physical blocks != 512 bytes. 102 97 103 - The partition checker now also ignores the 98 - The partition checker now also ignores the 104 word at 0xd0 that Windows likes to write to. 99 word at 0xd0 that Windows likes to write to. 105 100 106 Version 3.9 101 Version 3.9 107 ----------- 102 ----------- 108 103 109 - Moved cleanup from release_file() to put_ino 104 - Moved cleanup from release_file() to put_inode(). 110 This makes the first one obsolete. 105 This makes the first one obsolete. 111 106 112 - truncate() zeroes the unused remainder of a 107 - truncate() zeroes the unused remainder of a 113 partially used last block when a file is tru 108 partially used last block when a file is truncated. 114 It also marks the inode dirty now (which is 109 It also marks the inode dirty now (which is not 115 really necessary as notify_change() will do 110 really necessary as notify_change() will do 116 it anyway). 111 it anyway). 117 112 118 - Added a few comments, fixed some typos (and 113 - Added a few comments, fixed some typos (and 119 introduced some new ones), made the debug me 114 introduced some new ones), made the debug messages 120 more consistent. Changed a bad example in th 115 more consistent. Changed a bad example in the 121 doc file (affs.txt). 116 doc file (affs.txt). 122 117 123 - Sets the NOEXEC flag in read_super() for old 118 - Sets the NOEXEC flag in read_super() for old file 124 systems, since you can't run programs on the 119 systems, since you can't run programs on them. 125 120 126 Version 3.8 121 Version 3.8 127 ----------- 122 ----------- 128 Bill Hawes kindly reviewed the affs and sent m 123 Bill Hawes kindly reviewed the affs and sent me the 129 patches he did. They're marked (BH). Thanks, B 124 patches he did. They're marked (BH). Thanks, Bill! 130 125 131 - Cleanup of error handling in read_super(). 126 - Cleanup of error handling in read_super(). 132 Didn't release all resources in case of an 127 Didn't release all resources in case of an 133 error. (BH) 128 error. (BH) 134 129 135 - put_inode() releases the ext cache only if i 130 - put_inode() releases the ext cache only if it's 136 no longer needed. (BH) 131 no longer needed. (BH) 137 132 138 - One set of dentry callbacks is enough. (BH) 133 - One set of dentry callbacks is enough. (BH) 139 134 140 - Cleanup of error handling in namei.c. (BH) 135 - Cleanup of error handling in namei.c. (BH) 141 136 142 - Cleanup of error handling in file.c. (BH) 137 - Cleanup of error handling in file.c. (BH) 143 138 144 - The original blocksize of the device is 139 - The original blocksize of the device is 145 restored when the fs is unmounted. (BH) 140 restored when the fs is unmounted. (BH) 146 141 147 - getblock() did not invalidate the key cache 142 - getblock() did not invalidate the key cache 148 when it allocated a new block. 143 when it allocated a new block. 149 144 150 - Removed some unnecessary locks as Bill 145 - Removed some unnecessary locks as Bill 151 suggested. 146 suggested. 152 147 153 - Simplified match_name(), changed all hashing 148 - Simplified match_name(), changed all hashing 154 and case insensitive name comparisons to use 149 and case insensitive name comparisons to use 155 uppercase. This makes the tolower() routines 150 uppercase. This makes the tolower() routines 156 obsolete. 151 obsolete. 157 152 158 - Added mount option 'mufs' to force muFS 153 - Added mount option 'mufs' to force muFS 159 uid/gid interpretation. 154 uid/gid interpretation. 160 155 161 - File mode changes were not updated on disk. 156 - File mode changes were not updated on disk. 162 This was fixed before, but somehow got lost. 157 This was fixed before, but somehow got lost. 163 158 164 Version 3.7 159 Version 3.7 165 ----------- 160 ----------- 166 161 167 - Added dentry callbacks to allow the dcache t 162 - Added dentry callbacks to allow the dcache to 168 operate case insensitive and length ignorant 163 operate case insensitive and length ignorant 169 like the affs itself. 164 like the affs itself. 170 165 171 - getblock() didn't update the lastblock field 166 - getblock() didn't update the lastblock field in the 172 inode if the fs was not an OFS. This bug onl 167 inode if the fs was not an OFS. This bug only shows 173 up if a file was enlarged via truncate() and 168 up if a file was enlarged via truncate() and there 174 was not enough space. 169 was not enough space. 175 170 176 - Remove some more superfluous code left over 171 - Remove some more superfluous code left over from 177 the old link days ... 172 the old link days ... 178 173 179 - Fixed some oversights which were in patch 2. 174 - Fixed some oversights which were in patch 2.1.78. 180 175 181 - Fixed a few typos. 176 - Fixed a few typos. 182 177 183 Version 3.6 178 Version 3.6 184 ----------- 179 ----------- 185 180 186 - dentry changes. (Thanks to Jes Sorensen for 181 - dentry changes. (Thanks to Jes Sorensen for his help.) 187 182 188 - Fixed bug in balloc(): Superblock was not se 183 - Fixed bug in balloc(): Superblock was not set dirty after 189 the bitmap was changed, so the bitmap wasn't 184 the bitmap was changed, so the bitmap wasn't sync'd. 190 185 191 - Fixed nasty bug in find_new_zone(): If the c 186 - Fixed nasty bug in find_new_zone(): If the current 192 zone number was zero, the loop didn't termin 187 zone number was zero, the loop didn't terminate, 193 causing a solid lock-up. 188 causing a solid lock-up. 194 189 195 - Removed support for old-style directory read 190 - Removed support for old-style directory reads. 196 191 197 - Fixed bug in add_entry(): When doing a sorte 192 - Fixed bug in add_entry(): When doing a sorted insert, 198 the pointer to the next entry in the hash ch 193 the pointer to the next entry in the hash chain wasn't 199 correctly byte-swapped. Since most of the us 194 correctly byte-swapped. Since most of the users of the 200 affs use it on a 68k, they didn't notice. Bu 195 affs use it on a 68k, they didn't notice. But why did 201 I not find this during my tests? 196 I not find this during my tests? 202 197 203 - Fixed some oversights (version wasn't update 198 - Fixed some oversights (version wasn't updated on some 204 directory changes). 199 directory changes). 205 200 206 - Handling of hard links rewritten. To the VFS 201 - Handling of hard links rewritten. To the VFS 207 they appear now as normal Unix links. They a 202 they appear now as normal Unix links. They are 208 now resolved only once in lookup(). The back 203 now resolved only once in lookup(). The backside 209 is that unlink(), rename() and rmdir() have 204 is that unlink(), rename() and rmdir() have to 210 be smart about them, but the result is worth 205 be smart about them, but the result is worth the 211 effort. This also led to some code cleanup. 206 effort. This also led to some code cleanup. 212 207 213 - Changed name type to unsigned char; the test 208 - Changed name type to unsigned char; the test for 214 invalid filenames didn't work correctly. 209 invalid filenames didn't work correctly. 215 (Thanks to Michael Krause for pointing at th 210 (Thanks to Michael Krause for pointing at this.) 216 211 217 - Changed mapping of executable flag. 212 - Changed mapping of executable flag. 218 213 219 - Changed all network byte-order macros to the 214 - Changed all network byte-order macros to the 220 recommended ones. 215 recommended ones. 221 216 222 - Added a remount function, so attempts to rem 217 - Added a remount function, so attempts to remount 223 a dircache filesystem or one with errors rea 218 a dircache filesystem or one with errors read/write 224 can be trapped. Previously, ro remounts didn 219 can be trapped. Previously, ro remounts didn't 225 flush the super block, and rw remounts didn' 220 flush the super block, and rw remounts didn't 226 create allocation zones ... 221 create allocation zones ... 227 222 228 - Call shrink_dcache_parent() in rmdir(). 223 - Call shrink_dcache_parent() in rmdir(). 229 (Thanks to Bill Hawes.) 224 (Thanks to Bill Hawes.) 230 225 231 - Permission checks in unlink(). 226 - Permission checks in unlink(). 232 227 233 - Allow mounting of volumes with superfluous 228 - Allow mounting of volumes with superfluous 234 bitmap pointers read only, also allows them 229 bitmap pointers read only, also allows them 235 to be remounted read/write. 230 to be remounted read/write. 236 231 237 - Owner/Group defaults now to the fs user (i.e 232 - Owner/Group defaults now to the fs user (i.e. 238 the one that mounted it) instead of root. Th 233 the one that mounted it) instead of root. This 239 obsoletes the mount options uid and gid. 234 obsoletes the mount options uid and gid. 240 235 241 - Argument to volume option could overflow the 236 - Argument to volume option could overflow the 242 name buffer. It is now silently truncated to 237 name buffer. It is now silently truncated to 243 30 characters. (Damn it! This kind of bug 238 30 characters. (Damn it! This kind of bug 244 is too embarrassing.) 239 is too embarrassing.) 245 240 246 - Split inode.c into 2 files, the superblock 241 - Split inode.c into 2 files, the superblock 247 routines desperately wanted their own file. 242 routines desperately wanted their own file. 248 243 249 - truncate() didn't allocate an extension bloc 244 - truncate() didn't allocate an extension block 250 cache. If a file was extended by means of 245 cache. If a file was extended by means of 251 truncate(), this led to an Oops. 246 truncate(), this led to an Oops. 252 247 253 - fsuser is now checked last. 248 - fsuser is now checked last. 254 249 255 - rename() will not ignore changes in filename 250 - rename() will not ignore changes in filename 256 casing any more (though mv(1) still won't al 251 casing any more (though mv(1) still won't allow 257 you to do "mv oldname OldName"). 252 you to do "mv oldname OldName"). 258 253 259 Version 3.5 254 Version 3.5 260 ----------- 255 ----------- 261 256 262 - Extension block caches are now allocated on 257 - Extension block caches are now allocated on 263 demand instead of when a file is opened, as 258 demand instead of when a file is opened, as 264 files can be read and written without openin 259 files can be read and written without opening 265 them (e. g. the loopback device does this). 260 them (e. g. the loopback device does this). 266 261 267 - Removed an unused function. 262 - Removed an unused function. 268 263 269 Version 3.4 264 Version 3.4 270 ----------- 265 ----------- 271 266 272 - Hash chains are now sorted by block numbers. 267 - Hash chains are now sorted by block numbers. 273 (Thanks to Kars de Jong for finding this.) 268 (Thanks to Kars de Jong for finding this.) 274 - Removed all unnecessary external symbols. 269 - Removed all unnecessary external symbols. 275 270 276 Version 3.3 271 Version 3.3 277 ----------- 272 ----------- 278 273 279 - Tried to make all types 'correct' and consis 274 - Tried to make all types 'correct' and consistent. 280 - Errors and warnings are now reported via a 275 - Errors and warnings are now reported via a 281 function. They are all prefixed by a severit 276 function. They are all prefixed by a severity 282 and have the same appearance: 277 and have the same appearance: 283 "AFFS: <function>: <error message>" 278 "AFFS: <function>: <error message>" 284 (There's one exception to this, as in that f 279 (There's one exception to this, as in that function 285 is no pointer to the super block available.) 280 is no pointer to the super block available.) 286 - The filesystem is remounted read-only after 281 - The filesystem is remounted read-only after an 287 error. 282 error. 288 - The names of newly created filesystem object 283 - The names of newly created filesystem objects are 289 now checked for validity. 284 now checked for validity. 290 - Minor cleanups in comments. 285 - Minor cleanups in comments. 291 - Added this Changes file. At last! 286 - Added this Changes file. At last! 292 287 293 Version 3.2 288 Version 3.2 294 ----------- 289 ----------- 295 290 296 - Extension block cache: Reading/writing of hu 291 - Extension block cache: Reading/writing of huge files 297 (several MB) is much faster (of course the a 292 (several MB) is much faster (of course the added 298 overhead slows down opening, but this is har 293 overhead slows down opening, but this is hardly 299 noticeable). 294 noticeable). 300 - The same get_block()-routine can now be used 295 - The same get_block()-routine can now be used for 301 both OFS and FFS. 296 both OFS and FFS. 302 - The super block is now searched in the block 297 - The super block is now searched in the block that 303 was calculated and in the one following. Thi 298 was calculated and in the one following. This 304 should remedy the round-off error introduced 299 should remedy the round-off error introduced by 305 the 1-k blocks that Linux uses. 300 the 1-k blocks that Linux uses. 306 - Minor changes to adhere to the new VFS inter 301 - Minor changes to adhere to the new VFS interface. 307 - The number of used blocks is now also calcul 302 - The number of used blocks is now also calculated 308 if the filesystem is mounted read-only. 303 if the filesystem is mounted read-only. 309 - Prefixed some constants with AFFS_ to avoid 304 - Prefixed some constants with AFFS_ to avoid name 310 clashes. 305 clashes. 311 - Removed 'EXPERIMENTAL' status. 306 - Removed 'EXPERIMENTAL' status. 312 307 313 Version 3.1 308 Version 3.1 314 ----------- 309 ----------- 315 310 316 - Fixed a nasty bug which didn't allow read-on 311 - Fixed a nasty bug which didn't allow read-only 317 mounts. 312 mounts. 318 - Allow dir-cache filesystems to be mounted 313 - Allow dir-cache filesystems to be mounted 319 read only. 314 read only. 320 - OFS support. 315 - OFS support. 321 - Several other changes I just cannot remember 316 - Several other changes I just cannot remember 322 any more. 317 any more. 323 318 324 Version 3.0 319 Version 3.0 325 ----------- 320 ----------- 326 321 327 - Almost complete rewrite for the new VFS 322 - Almost complete rewrite for the new VFS 328 interface in Linux 1.3. 323 interface in Linux 1.3. 329 - Write support. 324 - Write support. 330 - Support for hard and symbolic links. 325 - Support for hard and symbolic links. 331 - Lots of things I remember even less ... 326 - Lots of things I remember even less ... 332 327 333 Version 2.0 328 Version 2.0 334 ----------- 329 ----------- 335 330 336 - Fixed a few things to get it compiled. 331 - Fixed a few things to get it compiled. 337 - Automatic root block calculation. 332 - Automatic root block calculation. 338 - Partition checker for genhd.c 333 - Partition checker for genhd.c 339 334 340 ======================================== 335 ======================================== 341 336 342 Let's just call Ray Burr's original affs 337 Let's just call Ray Burr's original affs 343 'Version 1.0'. 338 'Version 1.0'.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.