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