18c2ecf20Sopenharmony_ci(Note: I consider version numbers as cheap. That means 28c2ecf20Sopenharmony_cithat I do not like numbers like 0.1 and the like for 38c2ecf20Sopenharmony_cithings that can be used since quite some time. But 48c2ecf20Sopenharmony_cithen, 3.1 doesn't mean 'perfectly stable', too.) 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ciKnown bugs: 78c2ecf20Sopenharmony_ci----------- 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci- Doesn't work on the alpha. The only 64/32-bit 108c2ecf20Sopenharmony_ci problem that I'm aware of (pointer/int conversion 118c2ecf20Sopenharmony_ci in readdir()) gives compiler warnings but is 128c2ecf20Sopenharmony_ci apparently not causing the failure, as directory 138c2ecf20Sopenharmony_ci reads basically work (but all files are of size 0). 148c2ecf20Sopenharmony_ci Alas, I've got no alpha to debug. :-( 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci- The partition checker (drivers/block/genhd.c) 178c2ecf20Sopenharmony_ci doesn't work with devices which have 256 byte 188c2ecf20Sopenharmony_ci blocks (some very old SCSI drives). 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci- The feature to automatically make the fs clean 218c2ecf20Sopenharmony_ci might leave a trashed file system with the 228c2ecf20Sopenharmony_ci bitmap flag set valid. 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci- When a file is truncated to a size that is not 258c2ecf20Sopenharmony_ci a multiple of the blocksize, the rest of the 268c2ecf20Sopenharmony_ci last allocated block is not cleared. Well, 278c2ecf20Sopenharmony_ci this fs never claimed to be Posix conformant. 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ciPlease direct bug reports to: zippel@linux-m68k.org 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ciVersion 3.20 328c2ecf20Sopenharmony_ci------------ 338c2ecf20Sopenharmony_ci- kill kernel lock 348c2ecf20Sopenharmony_ci- fix for a possible bitmap corruption 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ciVersion 3.19 378c2ecf20Sopenharmony_ci------------ 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci- sizeof changes from Kernel Janitor Project 408c2ecf20Sopenharmony_ci- several bug fixes found with fsx 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ciVersion 3.18 438c2ecf20Sopenharmony_ci------------ 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci- change to global min macro + warning fixes 468c2ecf20Sopenharmony_ci- add module tags 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_ciVersion 3.17 498c2ecf20Sopenharmony_ci------------ 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci- locking fixes 528c2ecf20Sopenharmony_ci- wrong sign in __affs_hash_dentry 538c2ecf20Sopenharmony_ci- remove unnecessary check in affs_new_inode 548c2ecf20Sopenharmony_ci- enable international mode for dircache fs 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ciVersion 3.16 578c2ecf20Sopenharmony_ci------------ 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ci- use mark_buffer_dirty_inode instead of mark_buffer_dirty. 608c2ecf20Sopenharmony_ci- introduce affs_lock_{link|dir|ext}. 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ciVersion 3.15 638c2ecf20Sopenharmony_ci------------ 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ci- disable link to directories until we can properly support them. 668c2ecf20Sopenharmony_ci- locking fixes for link creation/removal. 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ciVersion 3.14 698c2ecf20Sopenharmony_ci------------ 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci- correctly cut off long file names for compares 728c2ecf20Sopenharmony_ci- correctly initialize s_last_bmap 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ciVersion 3.13 758c2ecf20Sopenharmony_ci------------ 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ciMajor cleanup for 2.4 [Roman Zippel] 788c2ecf20Sopenharmony_ci- new extended block handling 798c2ecf20Sopenharmony_ci- new bitmap allocation functions 808c2ecf20Sopenharmony_ci- locking should be safe for the future 818c2ecf20Sopenharmony_ci- cleanup of some interfaces 828c2ecf20Sopenharmony_ci 838c2ecf20Sopenharmony_ciVersion 3.12 848c2ecf20Sopenharmony_ci------------ 858c2ecf20Sopenharmony_ci 868c2ecf20Sopenharmony_cimore 2.4 fixes: [Roman Zippel] 878c2ecf20Sopenharmony_ci- s_lock changes 888c2ecf20Sopenharmony_ci- increased getblock mess 898c2ecf20Sopenharmony_ci- clear meta blocks 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ciVersion 3.11 928c2ecf20Sopenharmony_ci------------ 938c2ecf20Sopenharmony_ci 948c2ecf20Sopenharmony_ci- Converted to use 2.3.x page cache [Dave Jones] 958c2ecf20Sopenharmony_ci- Corruption in truncate() bugfix [Ken Tyler <kent@werple.net.au>] 968c2ecf20Sopenharmony_ci 978c2ecf20Sopenharmony_ciVersion 3.10 988c2ecf20Sopenharmony_ci------------ 998c2ecf20Sopenharmony_ci 1008c2ecf20Sopenharmony_ci- Changed partition checker to allow devices 1018c2ecf20Sopenharmony_ci with physical blocks != 512 bytes. 1028c2ecf20Sopenharmony_ci 1038c2ecf20Sopenharmony_ci- The partition checker now also ignores the 1048c2ecf20Sopenharmony_ci word at 0xd0 that Windows likes to write to. 1058c2ecf20Sopenharmony_ci 1068c2ecf20Sopenharmony_ciVersion 3.9 1078c2ecf20Sopenharmony_ci----------- 1088c2ecf20Sopenharmony_ci 1098c2ecf20Sopenharmony_ci- Moved cleanup from release_file() to put_inode(). 1108c2ecf20Sopenharmony_ci This makes the first one obsolete. 1118c2ecf20Sopenharmony_ci 1128c2ecf20Sopenharmony_ci- truncate() zeroes the unused remainder of a 1138c2ecf20Sopenharmony_ci partially used last block when a file is truncated. 1148c2ecf20Sopenharmony_ci It also marks the inode dirty now (which is not 1158c2ecf20Sopenharmony_ci really necessary as notify_change() will do 1168c2ecf20Sopenharmony_ci it anyway). 1178c2ecf20Sopenharmony_ci 1188c2ecf20Sopenharmony_ci- Added a few comments, fixed some typos (and 1198c2ecf20Sopenharmony_ci introduced some new ones), made the debug messages 1208c2ecf20Sopenharmony_ci more consistent. Changed a bad example in the 1218c2ecf20Sopenharmony_ci doc file (affs.txt). 1228c2ecf20Sopenharmony_ci 1238c2ecf20Sopenharmony_ci- Sets the NOEXEC flag in read_super() for old file 1248c2ecf20Sopenharmony_ci systems, since you can't run programs on them. 1258c2ecf20Sopenharmony_ci 1268c2ecf20Sopenharmony_ciVersion 3.8 1278c2ecf20Sopenharmony_ci----------- 1288c2ecf20Sopenharmony_ciBill Hawes kindly reviewed the affs and sent me the 1298c2ecf20Sopenharmony_cipatches he did. They're marked (BH). Thanks, Bill! 1308c2ecf20Sopenharmony_ci 1318c2ecf20Sopenharmony_ci- Cleanup of error handling in read_super(). 1328c2ecf20Sopenharmony_ci Didn't release all resources in case of an 1338c2ecf20Sopenharmony_ci error. (BH) 1348c2ecf20Sopenharmony_ci 1358c2ecf20Sopenharmony_ci- put_inode() releases the ext cache only if it's 1368c2ecf20Sopenharmony_ci no longer needed. (BH) 1378c2ecf20Sopenharmony_ci 1388c2ecf20Sopenharmony_ci- One set of dentry callbacks is enough. (BH) 1398c2ecf20Sopenharmony_ci 1408c2ecf20Sopenharmony_ci- Cleanup of error handling in namei.c. (BH) 1418c2ecf20Sopenharmony_ci 1428c2ecf20Sopenharmony_ci- Cleanup of error handling in file.c. (BH) 1438c2ecf20Sopenharmony_ci 1448c2ecf20Sopenharmony_ci- The original blocksize of the device is 1458c2ecf20Sopenharmony_ci restored when the fs is unmounted. (BH) 1468c2ecf20Sopenharmony_ci 1478c2ecf20Sopenharmony_ci- getblock() did not invalidate the key cache 1488c2ecf20Sopenharmony_ci when it allocated a new block. 1498c2ecf20Sopenharmony_ci 1508c2ecf20Sopenharmony_ci- Removed some unnecessary locks as Bill 1518c2ecf20Sopenharmony_ci suggested. 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_ci- Simplified match_name(), changed all hashing 1548c2ecf20Sopenharmony_ci and case insensitive name comparisons to use 1558c2ecf20Sopenharmony_ci uppercase. This makes the tolower() routines 1568c2ecf20Sopenharmony_ci obsolete. 1578c2ecf20Sopenharmony_ci 1588c2ecf20Sopenharmony_ci- Added mount option 'mufs' to force muFS 1598c2ecf20Sopenharmony_ci uid/gid interpretation. 1608c2ecf20Sopenharmony_ci 1618c2ecf20Sopenharmony_ci- File mode changes were not updated on disk. 1628c2ecf20Sopenharmony_ci This was fixed before, but somehow got lost. 1638c2ecf20Sopenharmony_ci 1648c2ecf20Sopenharmony_ciVersion 3.7 1658c2ecf20Sopenharmony_ci----------- 1668c2ecf20Sopenharmony_ci 1678c2ecf20Sopenharmony_ci- Added dentry callbacks to allow the dcache to 1688c2ecf20Sopenharmony_ci operate case insensitive and length ignorant 1698c2ecf20Sopenharmony_ci like the affs itself. 1708c2ecf20Sopenharmony_ci 1718c2ecf20Sopenharmony_ci- getblock() didn't update the lastblock field in the 1728c2ecf20Sopenharmony_ci inode if the fs was not an OFS. This bug only shows 1738c2ecf20Sopenharmony_ci up if a file was enlarged via truncate() and there 1748c2ecf20Sopenharmony_ci was not enough space. 1758c2ecf20Sopenharmony_ci 1768c2ecf20Sopenharmony_ci- Remove some more superfluous code left over from 1778c2ecf20Sopenharmony_ci the old link days ... 1788c2ecf20Sopenharmony_ci 1798c2ecf20Sopenharmony_ci- Fixed some oversights which were in patch 2.1.78. 1808c2ecf20Sopenharmony_ci 1818c2ecf20Sopenharmony_ci- Fixed a few typos. 1828c2ecf20Sopenharmony_ci 1838c2ecf20Sopenharmony_ciVersion 3.6 1848c2ecf20Sopenharmony_ci----------- 1858c2ecf20Sopenharmony_ci 1868c2ecf20Sopenharmony_ci- dentry changes. (Thanks to Jes Sorensen for his help.) 1878c2ecf20Sopenharmony_ci 1888c2ecf20Sopenharmony_ci- Fixed bug in balloc(): Superblock was not set dirty after 1898c2ecf20Sopenharmony_ci the bitmap was changed, so the bitmap wasn't sync'd. 1908c2ecf20Sopenharmony_ci 1918c2ecf20Sopenharmony_ci- Fixed nasty bug in find_new_zone(): If the current 1928c2ecf20Sopenharmony_ci zone number was zero, the loop didn't terminate, 1938c2ecf20Sopenharmony_ci causing a solid lock-up. 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_ci- Removed support for old-style directory reads. 1968c2ecf20Sopenharmony_ci 1978c2ecf20Sopenharmony_ci- Fixed bug in add_entry(): When doing a sorted insert, 1988c2ecf20Sopenharmony_ci the pointer to the next entry in the hash chain wasn't 1998c2ecf20Sopenharmony_ci correctly byte-swapped. Since most of the users of the 2008c2ecf20Sopenharmony_ci affs use it on a 68k, they didn't notice. But why did 2018c2ecf20Sopenharmony_ci I not find this during my tests? 2028c2ecf20Sopenharmony_ci 2038c2ecf20Sopenharmony_ci- Fixed some oversights (version wasn't updated on some 2048c2ecf20Sopenharmony_ci directory changes). 2058c2ecf20Sopenharmony_ci 2068c2ecf20Sopenharmony_ci- Handling of hard links rewritten. To the VFS 2078c2ecf20Sopenharmony_ci they appear now as normal Unix links. They are 2088c2ecf20Sopenharmony_ci now resolved only once in lookup(). The backside 2098c2ecf20Sopenharmony_ci is that unlink(), rename() and rmdir() have to 2108c2ecf20Sopenharmony_ci be smart about them, but the result is worth the 2118c2ecf20Sopenharmony_ci effort. This also led to some code cleanup. 2128c2ecf20Sopenharmony_ci 2138c2ecf20Sopenharmony_ci- Changed name type to unsigned char; the test for 2148c2ecf20Sopenharmony_ci invalid filenames didn't work correctly. 2158c2ecf20Sopenharmony_ci (Thanks to Michael Krause for pointing at this.) 2168c2ecf20Sopenharmony_ci 2178c2ecf20Sopenharmony_ci- Changed mapping of executable flag. 2188c2ecf20Sopenharmony_ci 2198c2ecf20Sopenharmony_ci- Changed all network byte-order macros to the 2208c2ecf20Sopenharmony_ci recommended ones. 2218c2ecf20Sopenharmony_ci 2228c2ecf20Sopenharmony_ci- Added a remount function, so attempts to remount 2238c2ecf20Sopenharmony_ci a dircache filesystem or one with errors read/write 2248c2ecf20Sopenharmony_ci can be trapped. Previously, ro remounts didn't 2258c2ecf20Sopenharmony_ci flush the super block, and rw remounts didn't 2268c2ecf20Sopenharmony_ci create allocation zones ... 2278c2ecf20Sopenharmony_ci 2288c2ecf20Sopenharmony_ci- Call shrink_dcache_parent() in rmdir(). 2298c2ecf20Sopenharmony_ci (Thanks to Bill Hawes.) 2308c2ecf20Sopenharmony_ci 2318c2ecf20Sopenharmony_ci- Permission checks in unlink(). 2328c2ecf20Sopenharmony_ci 2338c2ecf20Sopenharmony_ci- Allow mounting of volumes with superfluous 2348c2ecf20Sopenharmony_ci bitmap pointers read only, also allows them 2358c2ecf20Sopenharmony_ci to be remounted read/write. 2368c2ecf20Sopenharmony_ci 2378c2ecf20Sopenharmony_ci- Owner/Group defaults now to the fs user (i.e. 2388c2ecf20Sopenharmony_ci the one that mounted it) instead of root. This 2398c2ecf20Sopenharmony_ci obsoletes the mount options uid and gid. 2408c2ecf20Sopenharmony_ci 2418c2ecf20Sopenharmony_ci- Argument to volume option could overflow the 2428c2ecf20Sopenharmony_ci name buffer. It is now silently truncated to 2438c2ecf20Sopenharmony_ci 30 characters. (Damn it! This kind of bug 2448c2ecf20Sopenharmony_ci is too embarrassing.) 2458c2ecf20Sopenharmony_ci 2468c2ecf20Sopenharmony_ci- Split inode.c into 2 files, the superblock 2478c2ecf20Sopenharmony_ci routines desperately wanted their own file. 2488c2ecf20Sopenharmony_ci 2498c2ecf20Sopenharmony_ci- truncate() didn't allocate an extension block 2508c2ecf20Sopenharmony_ci cache. If a file was extended by means of 2518c2ecf20Sopenharmony_ci truncate(), this led to an Oops. 2528c2ecf20Sopenharmony_ci 2538c2ecf20Sopenharmony_ci- fsuser is now checked last. 2548c2ecf20Sopenharmony_ci 2558c2ecf20Sopenharmony_ci- rename() will not ignore changes in filename 2568c2ecf20Sopenharmony_ci casing any more (though mv(1) still won't allow 2578c2ecf20Sopenharmony_ci you to do "mv oldname OldName"). 2588c2ecf20Sopenharmony_ci 2598c2ecf20Sopenharmony_ciVersion 3.5 2608c2ecf20Sopenharmony_ci----------- 2618c2ecf20Sopenharmony_ci 2628c2ecf20Sopenharmony_ci- Extension block caches are now allocated on 2638c2ecf20Sopenharmony_ci demand instead of when a file is opened, as 2648c2ecf20Sopenharmony_ci files can be read and written without opening 2658c2ecf20Sopenharmony_ci them (e. g. the loopback device does this). 2668c2ecf20Sopenharmony_ci 2678c2ecf20Sopenharmony_ci- Removed an unused function. 2688c2ecf20Sopenharmony_ci 2698c2ecf20Sopenharmony_ciVersion 3.4 2708c2ecf20Sopenharmony_ci----------- 2718c2ecf20Sopenharmony_ci 2728c2ecf20Sopenharmony_ci- Hash chains are now sorted by block numbers. 2738c2ecf20Sopenharmony_ci (Thanks to Kars de Jong for finding this.) 2748c2ecf20Sopenharmony_ci- Removed all unnecessary external symbols. 2758c2ecf20Sopenharmony_ci 2768c2ecf20Sopenharmony_ciVersion 3.3 2778c2ecf20Sopenharmony_ci----------- 2788c2ecf20Sopenharmony_ci 2798c2ecf20Sopenharmony_ci- Tried to make all types 'correct' and consistent. 2808c2ecf20Sopenharmony_ci- Errors and warnings are now reported via a 2818c2ecf20Sopenharmony_ci function. They are all prefixed by a severity 2828c2ecf20Sopenharmony_ci and have the same appearance: 2838c2ecf20Sopenharmony_ci "AFFS: <function>: <error message>" 2848c2ecf20Sopenharmony_ci (There's one exception to this, as in that function 2858c2ecf20Sopenharmony_ci is no pointer to the super block available.) 2868c2ecf20Sopenharmony_ci- The filesystem is remounted read-only after an 2878c2ecf20Sopenharmony_ci error. 2888c2ecf20Sopenharmony_ci- The names of newly created filesystem objects are 2898c2ecf20Sopenharmony_ci now checked for validity. 2908c2ecf20Sopenharmony_ci- Minor cleanups in comments. 2918c2ecf20Sopenharmony_ci- Added this Changes file. At last! 2928c2ecf20Sopenharmony_ci 2938c2ecf20Sopenharmony_ciVersion 3.2 2948c2ecf20Sopenharmony_ci----------- 2958c2ecf20Sopenharmony_ci 2968c2ecf20Sopenharmony_ci- Extension block cache: Reading/writing of huge files 2978c2ecf20Sopenharmony_ci (several MB) is much faster (of course the added 2988c2ecf20Sopenharmony_ci overhead slows down opening, but this is hardly 2998c2ecf20Sopenharmony_ci noticeable). 3008c2ecf20Sopenharmony_ci- The same get_block()-routine can now be used for 3018c2ecf20Sopenharmony_ci both OFS and FFS. 3028c2ecf20Sopenharmony_ci- The super block is now searched in the block that 3038c2ecf20Sopenharmony_ci was calculated and in the one following. This 3048c2ecf20Sopenharmony_ci should remedy the round-off error introduced by 3058c2ecf20Sopenharmony_ci the 1-k blocks that Linux uses. 3068c2ecf20Sopenharmony_ci- Minor changes to adhere to the new VFS interface. 3078c2ecf20Sopenharmony_ci- The number of used blocks is now also calculated 3088c2ecf20Sopenharmony_ci if the filesystem is mounted read-only. 3098c2ecf20Sopenharmony_ci- Prefixed some constants with AFFS_ to avoid name 3108c2ecf20Sopenharmony_ci clashes. 3118c2ecf20Sopenharmony_ci- Removed 'EXPERIMENTAL' status. 3128c2ecf20Sopenharmony_ci 3138c2ecf20Sopenharmony_ciVersion 3.1 3148c2ecf20Sopenharmony_ci----------- 3158c2ecf20Sopenharmony_ci 3168c2ecf20Sopenharmony_ci- Fixed a nasty bug which didn't allow read-only 3178c2ecf20Sopenharmony_ci mounts. 3188c2ecf20Sopenharmony_ci- Allow dir-cache filesystems to be mounted 3198c2ecf20Sopenharmony_ci read only. 3208c2ecf20Sopenharmony_ci- OFS support. 3218c2ecf20Sopenharmony_ci- Several other changes I just cannot remember 3228c2ecf20Sopenharmony_ci any more. 3238c2ecf20Sopenharmony_ci 3248c2ecf20Sopenharmony_ciVersion 3.0 3258c2ecf20Sopenharmony_ci----------- 3268c2ecf20Sopenharmony_ci 3278c2ecf20Sopenharmony_ci- Almost complete rewrite for the new VFS 3288c2ecf20Sopenharmony_ci interface in Linux 1.3. 3298c2ecf20Sopenharmony_ci- Write support. 3308c2ecf20Sopenharmony_ci- Support for hard and symbolic links. 3318c2ecf20Sopenharmony_ci- Lots of things I remember even less ... 3328c2ecf20Sopenharmony_ci 3338c2ecf20Sopenharmony_ciVersion 2.0 3348c2ecf20Sopenharmony_ci----------- 3358c2ecf20Sopenharmony_ci 3368c2ecf20Sopenharmony_ci- Fixed a few things to get it compiled. 3378c2ecf20Sopenharmony_ci- Automatic root block calculation. 3388c2ecf20Sopenharmony_ci- Partition checker for genhd.c 3398c2ecf20Sopenharmony_ci 3408c2ecf20Sopenharmony_ci======================================== 3418c2ecf20Sopenharmony_ci 3428c2ecf20Sopenharmony_ciLet's just call Ray Burr's original affs 3438c2ecf20Sopenharmony_ci'Version 1.0'. 344