xref: /kernel/linux/linux-6.6/fs/affs/Changes (revision 62306a36)
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