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