162306a36Sopenharmony_ci(Note: I consider version numbers as cheap. That means 262306a36Sopenharmony_cithat I do not like numbers like 0.1 and the like for 362306a36Sopenharmony_cithings that can be used since quite some time. But 462306a36Sopenharmony_cithen, 3.1 doesn't mean 'perfectly stable', too.) 562306a36Sopenharmony_ci 662306a36Sopenharmony_ciKnown bugs: 762306a36Sopenharmony_ci----------- 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci- Doesn't work on the alpha. The only 64/32-bit 1062306a36Sopenharmony_ci problem that I'm aware of (pointer/int conversion 1162306a36Sopenharmony_ci in readdir()) gives compiler warnings but is 1262306a36Sopenharmony_ci apparently not causing the failure, as directory 1362306a36Sopenharmony_ci reads basically work (but all files are of size 0). 1462306a36Sopenharmony_ci Alas, I've got no alpha to debug. :-( 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci- The partition checker (drivers/block/genhd.c) 1762306a36Sopenharmony_ci doesn't work with devices which have 256 byte 1862306a36Sopenharmony_ci blocks (some very old SCSI drives). 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci- The feature to automatically make the fs clean 2162306a36Sopenharmony_ci might leave a trashed file system with the 2262306a36Sopenharmony_ci bitmap flag set valid. 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci- When a file is truncated to a size that is not 2562306a36Sopenharmony_ci a multiple of the blocksize, the rest of the 2662306a36Sopenharmony_ci last allocated block is not cleared. Well, 2762306a36Sopenharmony_ci this fs never claimed to be Posix conformant. 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ciPlease direct bug reports to: zippel@linux-m68k.org 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ciVersion 3.20 3262306a36Sopenharmony_ci------------ 3362306a36Sopenharmony_ci- kill kernel lock 3462306a36Sopenharmony_ci- fix for a possible bitmap corruption 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ciVersion 3.19 3762306a36Sopenharmony_ci------------ 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci- sizeof changes from Kernel Janitor Project 4062306a36Sopenharmony_ci- several bug fixes found with fsx 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ciVersion 3.18 4362306a36Sopenharmony_ci------------ 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci- change to global min macro + warning fixes 4662306a36Sopenharmony_ci- add module tags 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ciVersion 3.17 4962306a36Sopenharmony_ci------------ 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci- locking fixes 5262306a36Sopenharmony_ci- wrong sign in __affs_hash_dentry 5362306a36Sopenharmony_ci- remove unnecessary check in affs_new_inode 5462306a36Sopenharmony_ci- enable international mode for dircache fs 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ciVersion 3.16 5762306a36Sopenharmony_ci------------ 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci- use mark_buffer_dirty_inode instead of mark_buffer_dirty. 6062306a36Sopenharmony_ci- introduce affs_lock_{link|dir|ext}. 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ciVersion 3.15 6362306a36Sopenharmony_ci------------ 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci- disable link to directories until we can properly support them. 6662306a36Sopenharmony_ci- locking fixes for link creation/removal. 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ciVersion 3.14 6962306a36Sopenharmony_ci------------ 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci- correctly cut off long file names for compares 7262306a36Sopenharmony_ci- correctly initialize s_last_bmap 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ciVersion 3.13 7562306a36Sopenharmony_ci------------ 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ciMajor cleanup for 2.4 [Roman Zippel] 7862306a36Sopenharmony_ci- new extended block handling 7962306a36Sopenharmony_ci- new bitmap allocation functions 8062306a36Sopenharmony_ci- locking should be safe for the future 8162306a36Sopenharmony_ci- cleanup of some interfaces 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ciVersion 3.12 8462306a36Sopenharmony_ci------------ 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_cimore 2.4 fixes: [Roman Zippel] 8762306a36Sopenharmony_ci- s_lock changes 8862306a36Sopenharmony_ci- increased getblock mess 8962306a36Sopenharmony_ci- clear meta blocks 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ciVersion 3.11 9262306a36Sopenharmony_ci------------ 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci- Converted to use 2.3.x page cache [Dave Jones] 9562306a36Sopenharmony_ci- Corruption in truncate() bugfix [Ken Tyler <kent@werple.net.au>] 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ciVersion 3.10 9862306a36Sopenharmony_ci------------ 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ci- Changed partition checker to allow devices 10162306a36Sopenharmony_ci with physical blocks != 512 bytes. 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci- The partition checker now also ignores the 10462306a36Sopenharmony_ci word at 0xd0 that Windows likes to write to. 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ciVersion 3.9 10762306a36Sopenharmony_ci----------- 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci- Moved cleanup from release_file() to put_inode(). 11062306a36Sopenharmony_ci This makes the first one obsolete. 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci- truncate() zeroes the unused remainder of a 11362306a36Sopenharmony_ci partially used last block when a file is truncated. 11462306a36Sopenharmony_ci It also marks the inode dirty now (which is not 11562306a36Sopenharmony_ci really necessary as notify_change() will do 11662306a36Sopenharmony_ci it anyway). 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ci- Added a few comments, fixed some typos (and 11962306a36Sopenharmony_ci introduced some new ones), made the debug messages 12062306a36Sopenharmony_ci more consistent. Changed a bad example in the 12162306a36Sopenharmony_ci doc file (affs.txt). 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci- Sets the NOEXEC flag in read_super() for old file 12462306a36Sopenharmony_ci systems, since you can't run programs on them. 12562306a36Sopenharmony_ci 12662306a36Sopenharmony_ciVersion 3.8 12762306a36Sopenharmony_ci----------- 12862306a36Sopenharmony_ciBill Hawes kindly reviewed the affs and sent me the 12962306a36Sopenharmony_cipatches he did. They're marked (BH). Thanks, Bill! 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci- Cleanup of error handling in read_super(). 13262306a36Sopenharmony_ci Didn't release all resources in case of an 13362306a36Sopenharmony_ci error. (BH) 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci- put_inode() releases the ext cache only if it's 13662306a36Sopenharmony_ci no longer needed. (BH) 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci- One set of dentry callbacks is enough. (BH) 13962306a36Sopenharmony_ci 14062306a36Sopenharmony_ci- Cleanup of error handling in namei.c. (BH) 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci- Cleanup of error handling in file.c. (BH) 14362306a36Sopenharmony_ci 14462306a36Sopenharmony_ci- The original blocksize of the device is 14562306a36Sopenharmony_ci restored when the fs is unmounted. (BH) 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci- getblock() did not invalidate the key cache 14862306a36Sopenharmony_ci when it allocated a new block. 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ci- Removed some unnecessary locks as Bill 15162306a36Sopenharmony_ci suggested. 15262306a36Sopenharmony_ci 15362306a36Sopenharmony_ci- Simplified match_name(), changed all hashing 15462306a36Sopenharmony_ci and case insensitive name comparisons to use 15562306a36Sopenharmony_ci uppercase. This makes the tolower() routines 15662306a36Sopenharmony_ci obsolete. 15762306a36Sopenharmony_ci 15862306a36Sopenharmony_ci- Added mount option 'mufs' to force muFS 15962306a36Sopenharmony_ci uid/gid interpretation. 16062306a36Sopenharmony_ci 16162306a36Sopenharmony_ci- File mode changes were not updated on disk. 16262306a36Sopenharmony_ci This was fixed before, but somehow got lost. 16362306a36Sopenharmony_ci 16462306a36Sopenharmony_ciVersion 3.7 16562306a36Sopenharmony_ci----------- 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci- Added dentry callbacks to allow the dcache to 16862306a36Sopenharmony_ci operate case insensitive and length ignorant 16962306a36Sopenharmony_ci like the affs itself. 17062306a36Sopenharmony_ci 17162306a36Sopenharmony_ci- getblock() didn't update the lastblock field in the 17262306a36Sopenharmony_ci inode if the fs was not an OFS. This bug only shows 17362306a36Sopenharmony_ci up if a file was enlarged via truncate() and there 17462306a36Sopenharmony_ci was not enough space. 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ci- Remove some more superfluous code left over from 17762306a36Sopenharmony_ci the old link days ... 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci- Fixed some oversights which were in patch 2.1.78. 18062306a36Sopenharmony_ci 18162306a36Sopenharmony_ci- Fixed a few typos. 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ciVersion 3.6 18462306a36Sopenharmony_ci----------- 18562306a36Sopenharmony_ci 18662306a36Sopenharmony_ci- dentry changes. (Thanks to Jes Sorensen for his help.) 18762306a36Sopenharmony_ci 18862306a36Sopenharmony_ci- Fixed bug in balloc(): Superblock was not set dirty after 18962306a36Sopenharmony_ci the bitmap was changed, so the bitmap wasn't sync'd. 19062306a36Sopenharmony_ci 19162306a36Sopenharmony_ci- Fixed nasty bug in find_new_zone(): If the current 19262306a36Sopenharmony_ci zone number was zero, the loop didn't terminate, 19362306a36Sopenharmony_ci causing a solid lock-up. 19462306a36Sopenharmony_ci 19562306a36Sopenharmony_ci- Removed support for old-style directory reads. 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_ci- Fixed bug in add_entry(): When doing a sorted insert, 19862306a36Sopenharmony_ci the pointer to the next entry in the hash chain wasn't 19962306a36Sopenharmony_ci correctly byte-swapped. Since most of the users of the 20062306a36Sopenharmony_ci affs use it on a 68k, they didn't notice. But why did 20162306a36Sopenharmony_ci I not find this during my tests? 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_ci- Fixed some oversights (version wasn't updated on some 20462306a36Sopenharmony_ci directory changes). 20562306a36Sopenharmony_ci 20662306a36Sopenharmony_ci- Handling of hard links rewritten. To the VFS 20762306a36Sopenharmony_ci they appear now as normal Unix links. They are 20862306a36Sopenharmony_ci now resolved only once in lookup(). The backside 20962306a36Sopenharmony_ci is that unlink(), rename() and rmdir() have to 21062306a36Sopenharmony_ci be smart about them, but the result is worth the 21162306a36Sopenharmony_ci effort. This also led to some code cleanup. 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_ci- Changed name type to unsigned char; the test for 21462306a36Sopenharmony_ci invalid filenames didn't work correctly. 21562306a36Sopenharmony_ci (Thanks to Michael Krause for pointing at this.) 21662306a36Sopenharmony_ci 21762306a36Sopenharmony_ci- Changed mapping of executable flag. 21862306a36Sopenharmony_ci 21962306a36Sopenharmony_ci- Changed all network byte-order macros to the 22062306a36Sopenharmony_ci recommended ones. 22162306a36Sopenharmony_ci 22262306a36Sopenharmony_ci- Added a remount function, so attempts to remount 22362306a36Sopenharmony_ci a dircache filesystem or one with errors read/write 22462306a36Sopenharmony_ci can be trapped. Previously, ro remounts didn't 22562306a36Sopenharmony_ci flush the super block, and rw remounts didn't 22662306a36Sopenharmony_ci create allocation zones ... 22762306a36Sopenharmony_ci 22862306a36Sopenharmony_ci- Call shrink_dcache_parent() in rmdir(). 22962306a36Sopenharmony_ci (Thanks to Bill Hawes.) 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_ci- Permission checks in unlink(). 23262306a36Sopenharmony_ci 23362306a36Sopenharmony_ci- Allow mounting of volumes with superfluous 23462306a36Sopenharmony_ci bitmap pointers read only, also allows them 23562306a36Sopenharmony_ci to be remounted read/write. 23662306a36Sopenharmony_ci 23762306a36Sopenharmony_ci- Owner/Group defaults now to the fs user (i.e. 23862306a36Sopenharmony_ci the one that mounted it) instead of root. This 23962306a36Sopenharmony_ci obsoletes the mount options uid and gid. 24062306a36Sopenharmony_ci 24162306a36Sopenharmony_ci- Argument to volume option could overflow the 24262306a36Sopenharmony_ci name buffer. It is now silently truncated to 24362306a36Sopenharmony_ci 30 characters. (Damn it! This kind of bug 24462306a36Sopenharmony_ci is too embarrassing.) 24562306a36Sopenharmony_ci 24662306a36Sopenharmony_ci- Split inode.c into 2 files, the superblock 24762306a36Sopenharmony_ci routines desperately wanted their own file. 24862306a36Sopenharmony_ci 24962306a36Sopenharmony_ci- truncate() didn't allocate an extension block 25062306a36Sopenharmony_ci cache. If a file was extended by means of 25162306a36Sopenharmony_ci truncate(), this led to an Oops. 25262306a36Sopenharmony_ci 25362306a36Sopenharmony_ci- fsuser is now checked last. 25462306a36Sopenharmony_ci 25562306a36Sopenharmony_ci- rename() will not ignore changes in filename 25662306a36Sopenharmony_ci casing any more (though mv(1) still won't allow 25762306a36Sopenharmony_ci you to do "mv oldname OldName"). 25862306a36Sopenharmony_ci 25962306a36Sopenharmony_ciVersion 3.5 26062306a36Sopenharmony_ci----------- 26162306a36Sopenharmony_ci 26262306a36Sopenharmony_ci- Extension block caches are now allocated on 26362306a36Sopenharmony_ci demand instead of when a file is opened, as 26462306a36Sopenharmony_ci files can be read and written without opening 26562306a36Sopenharmony_ci them (e. g. the loopback device does this). 26662306a36Sopenharmony_ci 26762306a36Sopenharmony_ci- Removed an unused function. 26862306a36Sopenharmony_ci 26962306a36Sopenharmony_ciVersion 3.4 27062306a36Sopenharmony_ci----------- 27162306a36Sopenharmony_ci 27262306a36Sopenharmony_ci- Hash chains are now sorted by block numbers. 27362306a36Sopenharmony_ci (Thanks to Kars de Jong for finding this.) 27462306a36Sopenharmony_ci- Removed all unnecessary external symbols. 27562306a36Sopenharmony_ci 27662306a36Sopenharmony_ciVersion 3.3 27762306a36Sopenharmony_ci----------- 27862306a36Sopenharmony_ci 27962306a36Sopenharmony_ci- Tried to make all types 'correct' and consistent. 28062306a36Sopenharmony_ci- Errors and warnings are now reported via a 28162306a36Sopenharmony_ci function. They are all prefixed by a severity 28262306a36Sopenharmony_ci and have the same appearance: 28362306a36Sopenharmony_ci "AFFS: <function>: <error message>" 28462306a36Sopenharmony_ci (There's one exception to this, as in that function 28562306a36Sopenharmony_ci is no pointer to the super block available.) 28662306a36Sopenharmony_ci- The filesystem is remounted read-only after an 28762306a36Sopenharmony_ci error. 28862306a36Sopenharmony_ci- The names of newly created filesystem objects are 28962306a36Sopenharmony_ci now checked for validity. 29062306a36Sopenharmony_ci- Minor cleanups in comments. 29162306a36Sopenharmony_ci- Added this Changes file. At last! 29262306a36Sopenharmony_ci 29362306a36Sopenharmony_ciVersion 3.2 29462306a36Sopenharmony_ci----------- 29562306a36Sopenharmony_ci 29662306a36Sopenharmony_ci- Extension block cache: Reading/writing of huge files 29762306a36Sopenharmony_ci (several MB) is much faster (of course the added 29862306a36Sopenharmony_ci overhead slows down opening, but this is hardly 29962306a36Sopenharmony_ci noticeable). 30062306a36Sopenharmony_ci- The same get_block()-routine can now be used for 30162306a36Sopenharmony_ci both OFS and FFS. 30262306a36Sopenharmony_ci- The super block is now searched in the block that 30362306a36Sopenharmony_ci was calculated and in the one following. This 30462306a36Sopenharmony_ci should remedy the round-off error introduced by 30562306a36Sopenharmony_ci the 1-k blocks that Linux uses. 30662306a36Sopenharmony_ci- Minor changes to adhere to the new VFS interface. 30762306a36Sopenharmony_ci- The number of used blocks is now also calculated 30862306a36Sopenharmony_ci if the filesystem is mounted read-only. 30962306a36Sopenharmony_ci- Prefixed some constants with AFFS_ to avoid name 31062306a36Sopenharmony_ci clashes. 31162306a36Sopenharmony_ci- Removed 'EXPERIMENTAL' status. 31262306a36Sopenharmony_ci 31362306a36Sopenharmony_ciVersion 3.1 31462306a36Sopenharmony_ci----------- 31562306a36Sopenharmony_ci 31662306a36Sopenharmony_ci- Fixed a nasty bug which didn't allow read-only 31762306a36Sopenharmony_ci mounts. 31862306a36Sopenharmony_ci- Allow dir-cache filesystems to be mounted 31962306a36Sopenharmony_ci read only. 32062306a36Sopenharmony_ci- OFS support. 32162306a36Sopenharmony_ci- Several other changes I just cannot remember 32262306a36Sopenharmony_ci any more. 32362306a36Sopenharmony_ci 32462306a36Sopenharmony_ciVersion 3.0 32562306a36Sopenharmony_ci----------- 32662306a36Sopenharmony_ci 32762306a36Sopenharmony_ci- Almost complete rewrite for the new VFS 32862306a36Sopenharmony_ci interface in Linux 1.3. 32962306a36Sopenharmony_ci- Write support. 33062306a36Sopenharmony_ci- Support for hard and symbolic links. 33162306a36Sopenharmony_ci- Lots of things I remember even less ... 33262306a36Sopenharmony_ci 33362306a36Sopenharmony_ciVersion 2.0 33462306a36Sopenharmony_ci----------- 33562306a36Sopenharmony_ci 33662306a36Sopenharmony_ci- Fixed a few things to get it compiled. 33762306a36Sopenharmony_ci- Automatic root block calculation. 33862306a36Sopenharmony_ci- Partition checker for genhd.c 33962306a36Sopenharmony_ci 34062306a36Sopenharmony_ci======================================== 34162306a36Sopenharmony_ci 34262306a36Sopenharmony_ciLet's just call Ray Burr's original affs 34362306a36Sopenharmony_ci'Version 1.0'. 344