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