~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/fs/hfs/ChangeLog

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 2000-01-02  a sun  <asun@asun.cobalt.com>
  2 
  3         * file.c (hfs_get_block): added hfs_get_block for regular files. 
  4 
  5 1999-04-12  a sun  <asun@hecate.darksunrising.blah>
  6 
  7         * file_hdr.c (hdr_read): added rootinfo behaviour for DID header.
  8 
  9 1999-04-11  a sun  <asun@hecate.darksunrising.blah>
 10 
 11         * super.c (parse_options): added s_version so that we can select
 12         between different versions of the same layout.
 13 
 14 1999-04-05  a sun  <asun@hecate.darksunrising.blah>
 15 
 16         * linux/hfs_fs.h: unified netatalk and appledouble header format. 
 17         added in all of the AFP attribute bits.
 18 
 19         * file_hdr.c: added netatalk appledouble v2 compatible headers. 
 20 
 21 1999-01-30  a sun  <asun@hecate.darksunrising.blah>
 22 
 23         * catalog.c (hfs_cat_move): fixed corruption problem with
 24         renames.
 25 
 26 1999-01-27  a sun  <asun@hecate.darksunrising.blah>
 27 
 28         * file_hdr.c (get/set_dates): got rid of broken afpd times. NOTE:
 29         you must use netatalk-1.4b2+asun2.1.2 or newer for this.
 30 
 31 1998-12-20  a sun  <asun@hecate.darksunrising.blah>
 32 
 33         * bdelete.c (del_root): assign bthLNode and bthFNode only if the
 34         root node becomes a leaf node. Disk First Aid no longer
 35         complains. Norton Utilities, of course, has decided that it
 36         doesn't like the root node number. bleah. i think that it might be
 37         due to Norton Utilities not expecting the root node to have moved.
 38 
 39 1998-12-16  a sun  <asun@hecate.darksunrising.blah>
 40 
 41         * sysdep.c (hfs_revalidate_dentry): fix inode dates when there's a
 42         timezone change.
 43 
 44 1998-12-15  root  <root@hecate.darksunrising.blah>
 45 
 46         * extent.c (new_extent): expand block size variables to handle
 47         u32. 
 48 
 49         * mdb.c (hfs_mdb_get): AlBlkSiz shouldn't be capped at 65535. we
 50         should be able to handle much larger volumes now.
 51 
 52 1998-11-21  a sun  <asun@hecate.darksunrising.blah>
 53 
 54         * hfs_sysdep.h, hfs_fs.h: added hfs_from_utc/to_utc to deal with
 55         date differences on hfs formatted media. 
 56 
 57         NOTE: hfs extended keeps everything in utc, so we'll need to deal
 58         with that when appropriate.
 59 
 60 1998-11-12  a sun  <asun@hecate.darksunrising.blah>
 61 
 62         * extent.c (shrink_fork): added some lock_bitmap/unlock_bitmap's
 63         to protect hfs_clear_vbm_bits. we should no longer have problems
 64         with free_ablocks wrapping around.
 65 
 66 1998-11-02  a sun  <asun@hecate.darksunrising.blah>
 67 
 68         * mdb.c (hfs_mdb_get): plugged up an mdb failed initialization
 69         leak.
 70 
 71 1998-10-31  a sun  <asun@hecate.darksunrising.blah>
 72 
 73         * version.c (hfs_version): bumped to version 0.96.
 74 
 75         * mdb.c (hfs_mdb_commit): you only write out the alternate MDB
 76         when the catalog or extents overflow files grow. that just leaves
 77         the btree corruption problems. bleah (whilst deleting a bunch of
 78         files, more of the btree can get pruned away than desired).
 79 
 80 1998-10-30  a sun  <asun@hecate.darksunrising.blah>
 81 
 82         * dir.c: fixed a bunch of silliness with deletions. make sure to
 83         zero out stuff and set mark_inode_dirty().
 84         
 85 1998-10-29  a sun  <asun@hecate.darksunrising.blah>
 86 
 87         * string.c (hfs_strcmp, hfs_streq, hfs_strhash): converted them to
 88         take name/len arguments instead of hfs_name to reduce copying.
 89 
 90         * dir.c, dir_nat.c, dir_cap.c, dir_dbl.c, sysdep.c: modified
 91         relevant areas to reflect string.c changes.
 92         
 93 1998-10-28  a sun  <asun@hecate.darksunrising.blah>
 94 
 95         * hfs.h (hfs_lookup_dentry): oh my. more silliness. make sure to
 96         have the d_lookup use the same hash value as the one generated by
 97         hfs_hash_dentry. i also changed the argument order.
 98         (hfs_drop_special): change the argument order to be more in line
 99         with what the dcache stuff looks like.
100 
101         * sysdep.c (hfs_compare_dentry): the compare was returning the
102         wrong value for correct matches and causing all sorts of
103         mischief. this fixes both directory counts and mounting on top of
104         hfs volumes.
105 
106         * file.c, file_cap.c, file_hdr.c: added mark_inode_dirty()'s in
107         the relevant places.
108 
109 1998-10-11  root  <asun@hecate.darksunrising.blah>
110 
111         * mdb.c (hfs_mdb_get): moved initialization of mdb->entry_dirty
112         list to here to deal with trying to read a bad hfs volume.
113 
114 1998-10-10  a sun  <asun@zoology.washington.edu>
115 
116         * inode.c, catalog.c, dir_*.c, sysdep.c: parts of the dcache
117         conversion didn't get done properly. specifically, i forgot to
118         move the hfs_cat_puts into the right place. that's fixed now.
119 
120 1998-09-11  a sun  <asun@purgatorius.zoology.washington.edu>
121 
122         * mdb.c: altered mdb struct to reflect hfs plus usage.
123 
124 1998-08-27  a sun  <asun@purgatorius.zoology.washington.edu>
125 
126         * file.c, file_hdr.c, file_cap.c: dealt with the remaining
127         copy_to/from_user() error cases.
128 
129 1998-08-26  a sun  <asun@purgatorius.zoology.washington.edu>
130 
131         * super.c (hfs_read_super): fixed to deal with cdroms. why doesn't
132         the cdrom layer call the partition table code?
133 
134 Wed Jan 21 14:04:26 1998  a sun  <asun@zoology.washington.edu>
135 
136         * inode.c, sysdep.c
137         use d_iput to uncache dentry from catalog entry instead of relying
138         on put_inode. no more NULL pointer dereferences!
139 
140         * catalog.c
141         cleaned up hfs_cat_put a little.
142         
143         ISSUES (non-fatal): mv dir dir2 while creating files in dir screws
144                             up directory counts.
145                 
146                             deletion using netatalk screws up directory
147                             counts.
148 
149 Thu Jan 15 19:14:28 1998  a sun  <asun@zoology.washington.edu>
150 
151         * catalog.c
152         make deletion happen when requested instead of waiting until
153         an hfs_cat_put as the dcache can hold onto entries for quite
154         some time.
155 
156 Wed Jan 14 14:43:16 1998  a sun  <asun@zoology.washington.edu>
157         
158         * catalog.c
159         the current catalog allocation scheme allocates
160         PAGE_SIZE/sizeof(struct hfs_cat_entry) entries at a time and keeps
161         a pool of free entries up to this allocation unit * 8.
162 
163         * inode.c
164         make sure to always hfs_cat_put if hfs_iget is going to return
165         NULL.
166 
167         * string.c, catalog.c
168         use linux' hashing method to generate hashes. the old hashing was
169         getting collisions. catalog.c also has a larger hash table to
170         prevent collisions.
171         
172 Tue Jan 13 13:06:01 1998  a sun  <asun@zoology.washington.edu>
173 
174         * version.c
175         bumped to 0.95+asun3
176 
177         * catalog.c
178         re-wrote to dynamically allocate/delete catalog entries. on a 486,
179         entries fit into the size-256 slab.
180 
181 Wed Jan  7 19:33:33 1998  a sun  <asun@zoology.washington.edu>
182 
183         * inode.c 
184         don't hfs_cat_put gratuitously in hfs_iget. that's a bad
185         idea and results in screwed up entry counts.
186 
187 Tue Jan  6 14:38:24 1998  a sun  <asun@zoology.washington.edu>
188 
189         * version.c
190         changed it to 0.95+asun2
191 
192         * sysdep.c
193         altered catalog entry pruning to make sure that an iput
194         gets done. for some reason, shrink_dcache_parent wasn't
195         doing it.
196 
197         * catalog.c
198         added a global dirty list to check for pruning.
199         
200 Tue Jan  6 12:29:52 1998  a sun  <asun@zoology.washington.edu>
201 
202         * catalog.c
203         re-wrote it to be similar to 2.1.x inode.c. this should
204         at least make catalog.c SMP safe. 
205 
206         * hfs.h, linux/hfs_fs.h
207         moved dentry operations into hfs.h. these probably should
208         be moved somewhere else.
209 
210         * super.c, dir_cap.c, dir_nat.c, dir_dbl.c, sysdep.c
211         added dentry ops to hash everything to lowercase.
212 
213 Sun Dec 28 22:48:53 1997  a sun  <asun@zoology.washington.edu>
214 
215         * sysdep.c, catalog.c, hfs.h
216         as a temporary workaround until catalog.c gets re-written, 
217         i flush the dcache if we need more entries. 
218         
219 Fri Dec 19 15:11:21 1997  a sun  <asun@zoology.washington.edu>
220 
221         * dir_dbl.c
222         statically allocate tmp_name instead of doing it dynamically.
223 
224         NOTE: well, those pesky hfs_cat_put messages still aren't gone. in
225         addition, catalog.c needs to be modified to free up some entries
226         when the cache gets filled up. 
227 
228 Sun Dec 14 11:51:11 1997  a sun  <asun@zoology.washington.edu>
229 
230         * linux/hfs_fs.h
231         moved the dentry stuff into within the #ifdef __KERNEL__ 
232         part of hfs_fs.h and cleaned up a little.
233 
234 Sun Dec 14 11:24:54 1997  a sun  <asun@zoology.washington.edu>
235 
236         * dir.c
237         changed hfs_rename to delete all old dentries. hfs_cat_put
238         messages on umount should be a thing of the past now.
239 
240 Sun Dec 14 01:12:58 1997  a sun  <asun@zoology.washington.edu>
241 
242         * dir.c
243         changed mark_inodes_deleted to dget/d_delete/dput the dentry
244         instead of just dropping it. the bytes available should now
245         be updated properly upon deletion.
246 
247 Wed Dec 10 00:01:25 1997  a sun  <asun@zoology.washington.edu>
248 
249         * dir.c
250         changed mark_inodes_deleted to drop the dentry instead of 
251         just deleting it. 
252 
253         TODO: bytes available aren't being properly updated when a
254         resource fork gets deleted.
255 
256 Mon Dec  8 23:22:40 1997  a sun  <asun@zoology.washington.edu>
257 
258         * dir_cap.c, dir_nat.c, dir_dbl.c, dir.c
259         * hfs.h, linux/hfs_sysdep.h, linux/hfs_fs_i.h
260         Added code to drop ({dbl,cap,nat}_drop_dentry) invalid
261         dentries when creating or moving a file.
262 
263         * inode.c
264         Added code to delete cached dentries when a file gets deleted.
265 
266         * current yuckiness: there's an extra hfs_cat_put somewhere. it's
267         harmless but bothersome.
268         
269 Thu Dec  4 00:14:03 1997  a sun  <asun@zoology.washington.edu>
270 
271         * dir.c, dir_cap.c, dir_nat.c, file.c, file_hdr.c, inode.c,
272         * linux/{hfs_sysdep.h, hfs_fs.h}, version.c:
273         Completed first code dentrification sweep. It mounts! It copies!
274         It dcaches! 
275 
276 Mon Apr 28 06:58:44 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
277 
278         * version.c, INSTALL.sgml, HFS.sgml:
279         Bump version to 0.95 (Woohoo! We're beta!)
280 
281         * linux/hfs_fs.h:
282         Modify HFS_SB() and HFS_I() when compiled into the kernel.
283 
284         * FAQ.sgml:
285         Add a new question (and its answer):
286         Why does my Macintosh show generic application and document icons?
287 
288         * HFS.sgml:
289         Add some URLs and remove the (now empty) FAQ section.
290 
291 Sun Apr 27 22:17:01 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
292 
293         * HFS.sgml:
294         Don't call the version 1 headers "slightly modified".
295 
296         * file_hdr.c, dir_nat.c:
297         Comment some AFPD compatibility stuff.
298 
299         * FAQ.sgml:
300         Update for version 0.95.
301 
302         * BUG_INFO:
303         Remove the BIG_INFO script since we no longer mention it.
304 
305         * README.sgml, INSTALL.sgml, HFS.sgml, Makefile:
306         Split README.sgml into HFS.sgml and INSTALL.sgml.
307         Stop including the document sources in snapshots.
308 
309         * file_hdr.c:
310         Fix hdr_truncate() not to truncate the data fork.
311 
312 Wed Apr 16 23:56:25 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
313 
314         * FAQ.sgml:
315         Bump version to 0.8.4 and add two answers:
316                 How to fsck an HFS filesystem.
317                 How to generate linux/version.h.
318 
319         * version.c, README.sgml:
320         Bump version to 0.8.4.
321 
322         * README.sgml, FAQ.sgml, Makefile:
323         Separate the FAQ from the README.
324 
325         * linux/hfs_fs.h:
326         Add (struct hfs_fork) to the forward declarations.
327 
328 Thu Apr 10 05:47:16 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
329 
330         * linux/hfs_sysdep.h:
331         Work around the non-const declaration of test_bit()'s second argument.
332 
333         * Makefile:
334         Use .config from the kernel source to check for MODVERSIONS.
335 
336 Wed Apr  9 07:57:17 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
337 
338         * bnode.c:
339         Check the record table in each bnode as we read it from disk.
340 
341         * super.c, mdb.c, hfs.h:
342         Deal with the ATTRIB_CLEAN bit of the MDB properly (in mdb.c).
343 
344         * super.c, hfs.h, mdb.c:
345         Search for the alt-MDB rather than using the device size to find it.
346 
347 Wed Apr  9 03:39:05 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
348 
349         * version.c, README.sgml:
350         Bump version to 0.8.3.
351 
352 Mon Apr  7 20:09:56 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
353 
354         * part_tbl.c:
355         Fix to allow bootable CDROMs (which have blocksize != 512) to mount.
356 
357         * super.c:
358         Check that blk_size[MAJOR(dev)] is non-NULL before dereferencing.
359 
360 Sat Apr  5 10:44:42 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
361 
362         * hfs_btree.h, binsert.c, brec.c, bfind.c, bins_del.c, bdelete.c:
363         Make btree operations less likely to do
364         nasty things if the tree is corrupted.
365 
366         * part_tbl.c, README.sgml:
367         Count partitions from 0 rather than from 1.
368 
369 Wed Apr  2 23:26:51 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
370 
371         * bdelete.c:
372         Don't bother checking for oversized keys in hfs_bdelete().
373 
374         * bdelete.c, bfind.c, binsert.c:
375         Verify key lengths against the maximum given for the tree.
376 
377         * Makefile:
378         Check that /usr/include/linux/modversions.h exists before including it.
379         This allows compilation without CONFIG_MODVERSIONS enabled.
380 
381 Sat Mar 29 13:17:53 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
382 
383         * linux/hfs_fs.h, super.c, file_hdr.c, hfs.h, extent.c, file_cap.c,
384           dir_dbl.c, dir_nat.c, dir.c, dir_cap.c, binsert.c, catalog.c,
385           bfind.c:
386         Make (struct hfs_bkey) and (struct hfs_brec) more "abstract".
387 
388         * binsert.c:
389         Remove redundant test in hfs_binsert().
390 
391 Sat Mar 29 05:24:23 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
392 
393         * version.c, README.sgml:
394         Fix formatting problems in README.sgml and bump version to 0.8.2.
395 
396         * extent.c:
397         Fix bug that caused serious headaches with fragmented files.
398 
399 Fri Mar 28 00:23:18 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
400 
401         * version.c, README.sgml:
402         Bump version to 0.8.1.
403 
404         * btree.c, balloc.c:
405         Commit map nodes to buffers when new map nodes are added.
406 
407 Thu Mar 27 22:41:07 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
408 
409         * Makefile:
410         Include linux/modversions.h from the gcc command line.
411 
412         * mdb.c:
413         Was updating modified date twice in hfs_mdb_commit().
414 
415         * linux/hfs_sysdep.h, linux/hfs_fs.h, linux/hfs_fs_i.h,
416           linux/hfs_fs_sb.h, sysdep.c, trans.c, super.c, hfs_sysdep.h, inode.c,
417           hfs_fs_i.h, hfs_fs_sb.h, hfs_fs.h, hfs.h, file_cap.c, file_hdr.c,
418           file.c, dir_nat.c, dir_cap.c, dir_dbl.c, Makefile, dir.c:
419         Rearrange headers in preparation for inclusion in the kernel.
420 
421         * hfs_fs_sb.h, hfs_fs.h:
422         Add forward declarations so other code can include these headers.
423 
424         * hfs_sysdep.h:
425         Include __constant_hton[ls]() for little-endian machines.
426 
427         * hfs_fs.h, hfs_sysdep.h, hfs.h:
428         Move typedefs of hfs_{byte,word,lword}_t from hfs.h to hfs_sysdep.h.
429         Include hfs_sysdep.h from hfs_fs.h.
430 
431         * trans.c, super.c, part_tbl.c, string.c, inode.c, mdb.c, hfs_fs_sb.h,
432           hfs_sysdep.h, hfs_fs.h, hfs.h, hfs_btree.h, file_cap.c, file_hdr.c,
433           file.c, dir_nat.c, extent.c, dir_dbl.c, dir.c, dir_cap.c, catalog.c,
434           btree.c, bnode.c, brec.c, bitmap.c, bitops.c, bins_del.c, binsert.c,
435           bdelete.c, bfind.c, balloc.c:
436         Big type system changes in preparation for kernel inclusion:
437         '[US](8|16|32)' -> 'hfs_[us](8|16|32)' (avoids name space pollution)
438         'hfs_name_t' -> 'struct hfs_name' (allows forward declaration)
439 
440         * super.c, hfs_fs.h:
441         Add init_hfs_fs() to super.c for non-module compilation.
442 
443 Wed Mar 26 07:53:59 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
444 
445         * version.c, README.sgml:
446         Bump version to 0.8.
447 
448         * README.sgml:
449         Special compilation note for DEC Alpha.
450 
451         * README.sgml:
452         Note status on non-Intel processors.
453 
454         * hfs_fs.h:
455         Use long's for read() and write() on the Alpha.
456 
457         * README.sgml:
458         Document the afpd mount option.
459 
460         * inode.c:
461         Make files always writable for owner in afpd mode.
462 
463 Tue Mar 25 23:21:39 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
464 
465         * part_tbl.c:
466         Clean up the error checking code a bit.
467 
468 Sat Mar 22 19:43:40 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
469 
470         * part_tbl.c:
471         Fixed uninitialized variable in old-style partition code.
472 
473         * bins_del.c, bdelete.c:
474         Fix extraneous "bad argument to shift_{left,right}" messages.
475 
476         * bitops.c:
477         Note that these routines are now tested on Intel, PPC and Alpha.
478 
479         * Makefile:
480         Add -fno-builtin to the CFLAGS.
481 
482 Fri Feb 14 10:50:14 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
483 
484         * hfs_sysdep.h:
485         Don't include <asm/*.h> until after <linux/types.h>.
486 
487         * catalog.c:
488         Use volume create date in hashfn() rather than casting pointer to int.
489 
490         * hfs.h, mdb.c:
491         Maintaing volume create, modify and backup dates in struct hfs_mdb.
492 
493         * hfs_fs.h:
494         Include the header for put_user BEFORE using it!
495 
496         * string.c, hfs.h:
497         Make hfs_strhash() return an unsigned int.
498 
499         * trans.c, version.c, super.c, mdb.c, part_tbl.c, string.c, inode.c,
500           hfs_sysdep.h, hfs_fs.h, hfs_fs_sb.h, hfs_btree.h, hfs.h, file_cap.c,
501           file_hdr.c, extent.c, dir_dbl.c, dir_nat.c, dir_cap.c, dir.c,
502           catalog.c, btree.c, bnode.c, brec.c, bitmap.c, binsert.c,
503           bins_del.c, bdelete.c, balloc.c, README.sgml, Makefile:
504         Updated copyright notices.
505 
506         * trans.c, part_tbl.c, string.c, super.c, inode.c, mdb.c, hfs_fs.h,
507           hfs_fs_sb.h, hfs_sysdep.h, hfs_btree.h, hfs.h, file_cap.c,
508           file_hdr.c, dir_nat.c, extent.c, dir_cap.c, dir_dbl.c, catalog.c,
509           dir.c, brec.c, btree.c, bitmap.c, bnode.c, bdelete.c, bins_del.c,
510           binsert.c, Makefile, TODO, balloc.c:
511         First shot at portability to the DEC Alpha and non-gcc compilers.
512         This involved a significant overhaul of the type system.
513 
514 Tue Feb  4 04:26:54 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
515 
516         * version.c, README.sgml:
517         Bump version to "pre-0.8-4".
518 
519         * dir_nat.c:
520         Allow creat() in Netatalk .AppleDouble directories.
521 
522         * dir_dbl.c:
523         Make local functions static.
524 
525         * dir_dbl.c:
526         Removed unnecessary 'extern' qualifiers from forward declarations.
527 
528         * file_hdr.c, TODO:
529         Fixed the 30-year time warp with afpd.
530 
531         * TODO, trans.c:
532         Don't mangle the name .AppleDesktop under fork=netatalk.
533 
534 Mon Feb  3 23:18:45 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
535 
536         * inode.c:
537         Make header files always writable when the afpd mount option is given.
538         Otherwise it is impossible to unlock a locked file.
539 
540         * TODO, inode.c:
541         Let afpd think chmod() always succeeds, so "New Folder" works right.
542 
543         * super.c:
544         The 'afpd' mount option now makes 'fork=n,names=n' the default.
545 
546         * TODO:
547         List the current known afpd-compatibility problems as bugs.
548 
549         * file_hdr.c:
550         Make certain date changes through header files get written to disk.
551 
552 Sat Feb  1 02:24:12 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
553 
554         * mdb.c:
555         Work around for Linux rounding device sizes to 1k increments.
556 
557         * README.sgml:
558         Fixed a typo: "the a".
559 
560 Sat Dec 28 20:41:01 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
561 
562         * TODO:
563         Add ioctl() interface as a "missing feature."
564 
565         * dir_nat.c:
566         Finish implementing the afpd-compatibility
567         mode using the new 'afpd' mount option.
568 
569         * hfs_fs_sb.h, super.c:
570         Add new 'afpd' mount option.
571 
572         * file_cap.c:
573         Spelling fix.
574 
575 Wed Dec 11 23:16:08 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
576 
577         * TODO, README.sgml:
578         Optimistically document the hybrid CD problem as fixed.
579 
580         * part_tbl.c:
581         Fix the partition code so at least some of the hybrid
582         CDROMs that were previously rejected are now accepted.
583 
584         * hfs.h:
585         Make fs_start a 32-bit integer rather than 16-bits.
586         The 16-bit value would overflow if a partition started
587         beyond the 32M mark (e.g. the Executor 2 Beta 1 CDROM).
588 
589         * extent.c:
590         Fixed a typo in an error message.
591 
592 Tue Dec 10 14:43:46 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
593 
594         * dir_nat.c:
595         Merge in the (still dormant) afpd-compatibility changes.
596 
597         * inode.c:
598         Make the .AppleDouble directory writable (again).
599 
600         * version.c, README.sgml:
601         Bump version up to "pre-0.8-3".
602 
603         * hfs_fs.h, file_cap.c, file_hdr.c:
604         Move AFP constants to hfs_fs.h and prefix them with "HFS_".
605 
606         * dir_nat.c, inode.c:
607         Back-out changes that allowed writing to the .AppleDouble directory.
608 
609         * Makefile:
610         Update rules for linuxdoc-sgml v1.5.
611 
612         * extent.c:
613         Fixed serious bug in decode_extent() with handling of empty extents.
614 
615         * file.c:
616         Rewrote hfs_getblk().
617         It will no longer hang if hfs_extent_map() is buggy.
618         Also halves the worst-case number of calls to hfs_extent_map().
619 
620         * extent.c:
621         Fixed serious bug in decode_extent() with handling of empty extents.
622 
623         * hfs_fs.h:
624         Small change so the PPC (and maybe other architectures?)
625         pick up the prototypes for the user-space access functions.
626 
627         * super.c, file_cap.c, file_hdr.c, hfs_fs.h, file.c:
628         Updated for new user-space memory interface.
629 
630 Sun Dec  8 11:49:36 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
631 
632         * dir_nat.c:
633         Add special code for unlink(), and rename() in the .AppleDouble
634         directory and rmdir() of the .AppleDouble directory.
635 
636         * inode.c:
637         Make the .AppleDouble directory writable.
638 
639         * file_hdr.c:
640         Use AFP flags in version 1 headers (for Netatalk compatibility).
641 
642         * trans.c:
643         Fixed bug with long names causing kernel Oops.
644 
645 Mon Oct  7 06:05:01 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
646 
647         * hfs_fs.h, file_cap.c, file_hdr.c, hfs.h, extent.c, file.c, dir.c:
648         Fix types for various read/write/truncate computations.
649         Also allows compilation with 2.1.x kernels.
650 
651 Thu Sep 19 10:28:43 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
652 
653         * README.sgml, version.c:
654         Bump version up to "pre-0.8-2".
655 
656         * TODO:
657         Reformat the To Do list introducing prioritized categories.
658 
659         * file_hdr.c, file.c:
660         Move comments about mmap() for headers from file.c to file_hdr.c.
661         Also revise the reasoning for not yet having it implemented.
662 
663         * dir_nat.c, dir_cap.c, dir_dbl.c:
664         Remove 'hfs_' prefix from names of some purely local functions.
665 
666         * dir_dbl.c, TODO:
667         Under AppleDouble make create(), mkdir(), mknod(), unlink(), rename()
668         and rename() check against header files when arguments start with '%'.
669 
670         * super.c, hfs_fs_sb.h, hfs_fs.h, dir_dbl.c, dir_nat.c, dir_cap.c,
671           dir.c, README.sgml:
672         Fix problem that prevented creating %RootInfo or .rootinfo in all
673         directories in addition to preventing deletion from the root directory.
674 
675         * TODO:
676         Remove writable header files from the To Do list.
677 
678         * README.sgml:
679         Add extensive discussion of writing to HFS filesystems and
680         the format of the special files.
681 
682         * file_hdr.c:
683         Generate the 'homefs' field for version 1 header files.
684 
685 Wed Sep 18 23:07:45 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
686 
687         * hfs_fs.h, file_cap.c:
688         Comment the definition of (struct hfs_cap_info).
689 
690         * version.c, README.sgml:
691         Bump version up to "pre-0.8-1" and update the "How can I write?" FAQ.
692 
693         * file_hdr.c:
694         Implement hdr_write() and hdr_truncate()!!
695 
696         * hfs_fs_i.h, inode.c:
697         Make hdr_layout per-inode (not per-file) so hdr_truncate() will work.
698 
699         * file.c, hfs.h, catalog.c, extent.c, balloc.c:
700         hfs_extent_adj() now uses fork->lsize to determine the target file size.
701 
702 Sun Sep 15 07:55:24 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
703 
704         * README.sgml, trans.c:
705         Prevent creation of files & directories with '\0' or ':' in their names.
706 
707         * string.c, hfs_fs.h, hfs.h, dir_dbl.c, dir_nat.c, dir_cap.c:
708         With case=lower could have run off end of string.
709 
710 Tue Sep 10 12:05:47 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
711 
712         * inode.c:
713         Small clean up of HFS_FIL_LOCK handling.
714 
715         * inode.c:
716         Fix notify_change() not to accidentally make metadata executable.
717 
718         * hfs_fs.h:
719         AppleSingle files should have HFS_ITYPE_NORM.
720 
721         * inode.c:
722         Return to old behavior where MdDat = i_mtime.
723 
724         * dir_dbl.c:
725         Fix serious bug in hfs_dbl_readdir() that would lock-up access to a
726         directory if one tried to write to a directory they had previously read.
727 
728         * file.c:
729         Fix hfs_do_write() to adjust the fork's 'lsize' if it changed.
730 
731         * inode.c, file_cap.c:
732         Allow truncate() to be called even on metadata.
733         Any size changes will last only until the next iput() of the inode.
734         Truncating a header file doesn't yet truncate the resource fork.
735 
736         * inode.c:
737         Allow chmod() on a directory if it doesn't actually change i_mode.
738 
739         * hfs_fs.h, trans.c, super.c:
740         Rename hfs_cap2mac() to hfs_colon2mac().
741         Rename hfs_apl2mac() to hfs_prcnt2mac().
742 
743         * file_hdr.c:
744         Move header construction out of hdr_read() to create hdr_build_meta().
745 
746         * hfs.h:
747         Add byte-order independent conversions: U32->U16, U32->U8 and U16->U8.
748 
749         * file.c, file_cap.c, hfs_fs.h:
750         Rename fix_perms() to hfs_file_fix_mode() and
751         move it from file_cap.c to file.c.
752 
753         * README.sgml, super.c:
754         Make the default for the names mount option vary with the fork option.
755 
756         * file_cap.c:
757         The umask was applied incorrectly in fix_perms().
758 
759 Mon Sep  9 13:11:28 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
760 
761         * README.sgml:
762         Note that it compiles on m68k machines, but needs more testing.
763 
764         * hfs_sysdep.h, Makefile:
765         Changes to compile unmodified on m68k (and possibly other machines).
766 
767         * dir_cap.c:
768         hfs_cap_readdir() was mistakenly producing .rootinfo entries for
769         the .finderinfo and .resource subdirectories of the root directory.
770 
771         * inode.c:
772         A directory's i_size was too small by 1 under CAP, so hfs_cap_readdir()
773         would omit the last directory entry.  i_nlink was also too large by 1.
774 
775 Sun Sep  8 12:56:06 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
776 
777         * file_hdr.c:
778         Rewrite hdr_read() to be more efficient and to deal correctly with
779         descriptors having lengths that differ from the actual size of the data.
780 
781         * file_cap.c:
782         Add write support for CAP finderinfo files!!
783 
784         * super.c, inode.c, hfs_fs.h, hfs_fs_i.h, hfs_fs_sb.h, file_dbl.c,
785           file_nat.c, file_hdr.c, file.c, file_cap.c, Makefile, dir.c:
786         Generate metadata (header files and CAP finderinfo files) on-the-fly.
787         The files file_{dbl,nat}.c are merged into file_hdr.c as a result.
788 
789 Sat Sep  7 08:09:24 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
790 
791         * README.sgml:
792         Fix silly grammatical error.
793 
794 Fri Sep  6 09:17:12 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
795 
796         * hfs_fs_sb.h, super.c:
797         No need to cast type of s_reserved.
798 
799         * file_dbl.c, file_nat.c, dir_dbl.c, dir_nat.c, file_cap.c, dir_cap.c:
800         Add the missing NULL readpage and writepage entries to the inode_ops.
801 
802         * file_dbl.c, file_nat.c, file.c, file_cap.c:
803         Cleanup error checking for read() and write().
804 
805 Thu Sep  5 05:29:53 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
806 
807         * version.c, README.sgml:
808         Bump version up to "0.7.2".
809         User-visible changes from 0.7.0:
810         + Corrected CAP finderinfo file format.
811         + Support for more features of CAP finderinfo files.
812         + No longer requires gcc 2.7.0 or newer.
813         + Now implements mknod() system call.
814 
815         * hfs_fs.h, dir_nat.c, file_cap.c, file_nat.c, README.sgml, dir_cap.c:
816         Include the CAP and Netatalk copyright notices.
817 
818         * hfs_fs.h, file_cap.c:
819         Repair and improve CAP support.
820 
821         * catalog.c:
822         Oops! The BkDat for new files and directories was in 1972 when
823         it should have been in 1904 (not that it matters that much).
824 
825         * inode.c:
826         The HFS MdDat should be the larger of the i_mtime and i_ctime.
827 
828         * README.sgml:
829         Change 'm_time' to 'i_mtime'.
830 
831 Wed Sep  4 13:27:35 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
832 
833         * version.c, README.sgml:
834         Bump version up to "0.7.1".
835         User-visible changes from 0.7.0:
836         + Minor bug in CAP finderinfo file format fixed.
837         + No longer requires gcc 2.7.0 or newer.
838         + Now implements mknod() system call.
839 
840         * README.sgml:
841         Removed note about needing gcc 2.7.0 or newer.
842 
843         * file.c:
844         Optimize hfs_do_read() based on the fact that HFS has no holes in files.
845         Minor code formatting changes.
846 
847         * hfs.h, hfs_sysdep.h, mdb.c, extent.c, file.c, btree.c, catalog.c,
848           balloc.c, bnode.c:
849         Reorganize memory management routines.
850         hfs_malloc() and hfs_free() are the main routines.
851         The macros FREE() and MALLOC() are gone.
852         HFS_NEW() and HFS_DELETE() are new 'shorthand' macros.
853 
854         * btree.c:
855         Fix broken debugging code.
856 
857         * super.c, hfs.h, mdb.c, part_tbl.c, Makefile:
858         Separate partition table handling into its own file.
859 
860         * dir.c:
861         Spelling fixes.
862 
863         * sysdep.c:
864         Oops!  Error check got sense reversed while editing.
865 
866         * mdb.c, sysdep.c, hfs.h, hfs_btree.h, hfs_sysdep.h, btree.c, extent.c,
867           bfind.c, bnode.c, balloc.c:
868         Make hfs_buffer a pointer to a buffer_head, rather than a buffer_head.
869 
870         * hfs_fs.h, dir_cap.c, dir_dbl.c, dir_nat.c, dir.c:
871         Add a mknod() entry to the inode_operations for normal directories.
872         All it is good for is letting root create regular files.
873 
874         * file_dbl.c, file_nat.c, file.c, file_cap.c, dir_cap.c, dir_dbl.c,
875           dir_nat.c:
876         Add the missing NULL entries to the end of the file_operations.
877 
878         * super.c, hfs_btree.h, hfs_fs.h, mdb.c, extent.c, hfs.h, catalog.c:
879         Make the remainder of the (untested) changes
880         to allow compilation with gcc 2.6.3.
881 
882         * hfs_fs.h:
883         Fix hfs_fs.h to work with gcc 2.6.3.
884 
885         * hfs_fs.h:
886         (struct hfs_cap_info) should never have been 'packed'.
887 
888         * BUG_INFO:
889         Use -V for getting version of module utilities.
890 
891         * super.c, sysdep.c, trans.c, hfs_fs_sb.h, inode.c, hfs_fs.h,
892           hfs_fs_i.h, file_cap.c, file_dbl.c, file_nat.c, dir_dbl.c,
893           dir_nat.c, file.c, dir.c, dir_cap.c:
894         Fix up hfs_fs{,_i,_sb}.h in preparation for inclusion in kernel.
895 
896 Tue Sep  3 23:58:03 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
897 
898         * hfs.h:
899         Change eventual destination to linux/fs/hfs rather than include/linux.
900 
901         * super.c, inode.c, mdb.c, hfs_btree.h, hfs_fs.h, hfs_sysdep.h,
902           file_dbl.c, file_nat.c, hfs.h, dir_nat.c, extent.c, dir_dbl.c,
903           catalog.c, dir_cap.c, brec.c, btree.c, binsert.c, bnode.c, bdelete.c,
904           bfind.c, bins_del.c, balloc.c:
905         Replace all the swap{16,32}() stuff w/ ntohl() and friends.
906 
907 Fri Aug 30 09:51:23 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
908 
909         * version.c, README.sgml:
910         Rewrite installation instructions and bump version up to "0.7.0".
911 
912         * Makefile:
913         Remove the INCDIR variable; we now rely on the
914         user to have the correct links in /usr/include.
915 
916 Mon Aug 26 12:25:41 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
917 
918         * version.c, README.sgml:
919         Reformat the documentation and bump version up to "pre-0.7-9".
920         Hopefully this will become version 0.7 in a few days.
921 
922 Thu Aug 22 08:00:44 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
923 
924         * README.sgml, version.c:
925         Bump version up to "pre-0.7-8".
926 
927         * file_nat.c, file_dbl.c:
928         AppleDouble headers had resource fork size in wrong byte order.
929 
930 Wed Aug 21 05:22:28 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
931 
932         * version.c, README.sgml:
933         Bump version up to "pre-0.7-7".
934 
935         * bnode.c:
936         Fixed a long-standing bug in hfs_bnode_lock().
937         This bug occasionally caused lock-up under heavy load.
938 
939 Tue Aug 20 09:15:10 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
940 
941         * README.sgml, version.c:
942         Bump version up to "pre-0.7-6".
943 
944         * catalog.c:
945         Fix a deadlock problem in catalog readers/writers locking.
946 
947         * bins_del.c:
948         hfs_bnode_update_key() was still corrupting the header node sometimes.
949 
950         * catalog.c, dir.c:
951         Fix problem with extending the catalog B-tree hanging hfs_cat_commit().
952         Fix a race that could delete a non-empty directory.
953 
954 Sun Aug 18 23:16:43 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
955 
956         * version.c, README.sgml:
957         Bump version to "pre-0.7-5" for test release.
958 
959         * dir_cap.c, README.sgml:
960         Change ".:rootinfo:" to ".rootinfo".
961 
962         * hfs_fs.h, dir_cap.c, dir_dbl.c, dir_nat.c:
963         Mangle the names as first step in hfs_{cap,dbl,nat}_lookup().
964         Use the new hfs_streq() to catch mixed case matches to the special
965         files and directories in hfs_{cap,dbl,nat}_lookup().
966         Store reserved names only once.
967 
968         * dir.c, hfs.h, string.c:
969         Implement hfs_streq() which tests for string equality more
970         rapidly than hfs_strcmp() by checking for equal length first,
971         and use it when checking for reserved names.
972 
973         * inode.c, TODO, dir_cap.c, dir_dbl.c, README.sgml:
974         Provide the metadata for the root directory for the CAP and AppleDouble
975         schemes in the files ".:rootinfo:" and "%RootInfo", respectively.
976 
977         * TODO, super.c:
978         Add (untested) support for the old Mac Plus style of partition map.
979 
980         * bdelete.c, TODO:
981         Note the possibility of bdelete() to hanging on a corrupted B-tree.
982 
983         * TODO:
984         Add items corresponding to some of the 'XXX' comments in the sources.
985 
986         * dir_dbl.c, dir_cap.c:
987         Update comments, removing ref. to a comment that once existed in inode.c
988 
989         * catalog.c:
990         Remove some redundant locking and error checks
991         that had been previously marked as questionable.
992 
993 Sat Aug 17 08:06:56 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
994 
995         * binsert.c, bfind.c, bins_del.c, balloc.c, bdelete.c:
996         Edited some comments for correctness.
997 
998         * README.sgml, version.c:
999         Bump version up to "pre-0.7-4" in preparation for snapshot release.
1000 
1001         * Makefile:
1002         Have 'make dep' delete the *.o and *.s files.
1003 
1004         * catalog.c, hfs.h, TODO, bfind.c:
1005         Move looping from hfs_cat_next() into hfs_bsucc(),
1006         where it can be done an entire node at a time.
1007 
1008 Fri Aug 16 05:02:59 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1009 
1010         * TODO:
1011         Add AppleShare support to the list of goals.
1012 
1013         * trans.c, super.c, hfs_fs.h, README.sgml:
1014         Add a "names=netatalk" mount option, since
1015         Netatalk quotes initial periods and CAP doesn't.
1016 
1017         * Makefile:
1018         Oops! Had removed the 'include .depend' from Makefile.
1019 
1020         * inode.c, hfs_fs.h, file_nat.c, file_dbl.c, file.c, dir_nat.c,
1021           dir_dbl.c, dir_cap.c, dir.c, README.sgml:
1022         Update for 2.0.1 and newer kernels.
1023 
1024         * Makefile:
1025         Get rid of ifeq stuff and use a .tmpdepend file to make sure
1026         a failed 'make depend' doesn't allow a 'make hfs.o'.
1027 
1028 Wed Aug 14 01:03:01 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1029 
1030         * version.c, README.sgml:
1031         Bump version up to "pre-0.7-3" in preparation for snapshot release.
1032 
1033         * btree.c, extent.c, bnode.c:
1034         Fix up some debugging code.
1035 
1036 Tue Aug 13 12:42:12 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1037 
1038         * version.c, README.sgml:
1039         Bump revision to "pre-0.7-2".
1040 
1041         * super.c, sysdep.c, mdb.c, file_nat.c, inode.c, file_cap.c,
1042           file_dbl.c, file.c, extent.c, dir.c, catalog.c, btree.c, bnode.c,
1043           balloc.c:
1044         Added the remaining missing function comments.
1045 
1046         * Makefile, README.sgml:
1047         Simplify the default make rule to build the dependency file AND hfs.o.
1048         Change the installation instructions to reflect the change.
1049 
1050         * hfs.h:
1051         Added missing structure comments.
1052 
1053         * bdelete.c:
1054         Merge bdelete_brec() back into hfs_bdelete().
1055         Add missing function comments.
1056 
1057 
1058         * extent.c:
1059         Insignificant code change removing an unneeded indirection.
1060 
1061         * btree.c, hfs_btree.h, balloc.c, bnode.c:
1062         Add a 'sys_mdb' field to (struct hfs_btree).
1063 
1064         * extent.c, hfs_sysdep.h, sysdep.c, bnode.c, balloc.c, bfind.c,
1065           Makefile:
1066         Move hfs_buffer_read() from hfs_sysdep.h to sysdep.c so it can use
1067         the symbol HFS_SECTOR_SIZE rather than the manifest constant 512.
1068         Have hfs_buffer_read() print an error message,
1069         and remove redundant errors from the callers.
1070 
1071         * hfs_sysdep.h, mdb.c, super.c, file.c, hfs.h, hfs_btree.h, catalog.c,
1072           extent.c, btree.c, balloc.c, bfind.c, bnode.c:
1073         Get rid of the type hfs_device and the fields of that type,
1074         using the type hfs_sysmdb and the 'sys_mdb' field in its place.
1075 
1076         * Makefile:
1077         Fix definition of HDRS variable.
1078 
1079         * README.sgml, version.c:
1080         Bump version up to "pre-0.7-1".
1081 
1082         * Makefile:
1083         Separate sources and headers into three groups:
1084         B-tree code, HFS code and Linux code.
1085 
1086         * bitmap.c, bitops.c, hfs.h, hfs_sysdep.h, balloc.c:
1087         Implemented portable set of bit operations in hfs_sysdep.h
1088 
1089         * mdb.c, hfs_sysdep.h, hfs_btree.h, extent.c, btree.c, bitmap.c,
1090           bnode.c, balloc.c:
1091         Implement a portable set of buffer operations in hfs_sysdep.h
1092 
1093         * TODO:
1094         Remove note about separating header files into two parts.
1095 
1096         * catalog.c:
1097         Remove call to hfs_mdb_dirty(), since the hfs_brec_relse() does it.
1098 
1099         * hfs.h, extent.c, file.c:
1100         Move hfs_getblk() from extent.c to file.c, since that is now the
1101         only file that actually uses it.
1102 
1103         * balloc.c:
1104         Replace use of hfs_getblk() in balloc.c with a local function
1105         (get_new_node()) that doesn't retry, since B-trees can't shrink.
1106 
1107         * hfs.h, hfs_btree.h, hfs_sysdep.h, mdb.c, extent.c:
1108         Make hfs_buffer a typedef.
1109 
1110         * inode.c, hfs.h, hfs_sysdep.h, dir.c:
1111         Change hfs_sysentry to a typedef.
1112         Rename 'sysentry' field of (struct hfs_cat_entry) to 'sys_entry'.
1113 
1114         * super.c, mdb.c, catalog.c:
1115         Rename hfs_cat_sync() to hfs_cat_commit() and call it
1116         from hfs_mdb_commit() rather than from hfs_write_super().
1117 
1118         * catalog.c, file.c:
1119         Minimize the calls to hfs_mdb_dirty().   Now called when:
1120         1) A buffer holding a volume bitmap block is dirtied.
1121         2) A dirty B-tree node is written back to the buffers.
1122         3) A dirty catalog entry is written back to the buffers.
1123 
1124         * hfs_sysdep.h, hfs.h:
1125         Make hfs_sysmdb a typedef.
1126 
1127 Sun Aug 11 08:46:10 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1128 
1129         * hfs_sysdep.h, extent.c, hfs.h:
1130         Replace hfs_mdb_{lock,unlock} with more portable
1131         scheme using a wait queue in the MDB.
1132 
1133         * hfs.h, hfs_btree.h, hfs_sysdep.h, bnode.c, catalog.c, binsert.c:
1134         Make hfs_wait_queue a typedef'd pointer to a (struct wait_queue).
1135         Rename hfs_wait_on() to hfs_sleep_on().
1136 
1137         * catalog.c, hfs_sysdep.h, super.c, bfind.c, bnode.c, balloc.c:
1138         Implemented hfs_dev_name() in hfs_sysdep.h
1139         as a portable call to produce a device name.
1140 
1141         * super.c, hfs.h, mdb.c:
1142         Rename hfs_mdb_read() to hfs_mdb_get(), and don't take a
1143         'sys_mdb' argument.  That's the callers responsibility.
1144 
1145         * sysdep.c, Makefile:
1146         Remove the pointless file sysdep.c
1147 
1148         * README.sgml:
1149         Clean up the "System Requirements" section.
1150 
1151 Sat Aug 10 22:41:24 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1152 
1153         * sysdep.h, sysdep.c, super.c, hfs_sysdep.h, mdb.c, string.c,
1154           hfs_fs.h, hfs_fs_i.h, hfs_fs_sb.h, hfs_btree_private.h, hfs_btree.h,
1155           file_cap.c, file_dbl.c, file_nat.c, hfs.h, file.c, dir_nat.c,
1156           extent.c, dir.c, dir_cap.c, dir_dbl.c, catalog.c, bnode.c, brec.c,
1157           btree.c, binsert.c, bitmap.c, bitops.c, bfind.c, bins_del.c,
1158           Makefile, balloc.c, bdelete.c:
1159         Includes the hfs.h that was missing from the previous check in.
1160         MAJOR include-file cleanup:
1161                 hfs_btree.h merged into hfs.h
1162                 hfs_btree_private.h renamed hfs_btree.h
1163                 sysdep.h renamed hfs_sysdep.h
1164         Fixed some minor portability fixes shown up by the header split.
1165 
1166         * README.sgml:
1167         Add instructions for a dealing with a missing linux/version.h
1168 
1169         * hfs_fs.h, mdb.c, string.c, catalog.c, extent.c, btree.c, bitmap.c,
1170           bitops.c, bnode.c, brec.c, bins_del.c, binsert.c, bdelete.c, bfind.c,
1171           balloc.c:
1172         Major split of hfs_fs.h into Linux-specific
1173         part (hfs_fs.h) and HFS-specific part (hfs.h).
1174 
1175         * file.c, extent.c:
1176         Move hfs_getblk() from file.c to extent.c
1177 
1178         * sysdep.h, super.c, mdb.c, hfs_fs_sb.h, hfs_fs.h, file.c, extent.c,
1179           catalog.c, bnode.c, bitmap.c:
1180         Make the field 's_mdb' in (struct hfs_sb_info) a pointer to
1181         the MDB, rather than the actual MDB.  This allowed the definition
1182         of (struct hfs_mdb) to be moved from hfs_fs_sb.h to hfs_fs.h.
1183 
1184         * ccache.c, hfs_fs.h, Makefile, catalog.c:
1185         Merged ccache.c and catalog.c into the latter.
1186         Moved definition of (struct hfs_cat_rec) into catalog.c
1187 
1188         * extent.c:
1189         Oops!  Last set of changes didn't compile but they're OK now.
1190 
1191         * hfs_btree.h, hfs_fs.h, mdb.c, ccache.c, extent.c, btree.c:
1192         Move the definition of (struct hfs_raw_extent) inside
1193         extent.c and treat it as simple array of U16's elsewhere.
1194 
1195         * hfs_fs.h, dir_dbl.c, dir_nat.c, ccache.c, catalog.c, dir_cap.c:
1196         Make hfs_cat_next() return the CNID and cdrType of the entry.
1197         Now catalog.c and ccache.c are the only files which
1198         depend on the structure of a catalog record on disk.
1199 
1200         * dir.c, hfs_fs.h, catalog.c:
1201         Replace hfs_cat_new_{file,dir}() with hfs_cat_{create,mkdir}()
1202         which are wrappers for what used to be hfs_cat_create().
1203 
1204         * hfs_fs.h, mdb.c, super.c, Makefile:
1205         Split super.c into super.c (Linux stuff) and mdb.c (MDB stuff).
1206 
1207         * super.c, hfs_fs_sb.h:
1208         Add the MDB field 'drAtrb' to (struct hfs_mdb) as the field 'attrib'.
1209 
1210         * hfs_fs_sb.h, super.c:
1211         Split hfs_read_super() into hfs_read_super() and hfs_mdb_read().
1212 
1213         * super.c, hfs_fs_sb.h:
1214         Remove the unneeded 'hs' field from (struct hfs_mdb).
1215 
1216         * TODO:
1217         Remove item about hfs_notify_change() needing to update metadata.
1218 
1219         * inode.c, hfs_fs.h, hfs_fs_sb.h, file_cap.c, file_dbl.c, file_nat.c,
1220           file.c, dir.c:
1221         Add a flags argument to hfs_{cap,dbl,nat}_buildmeta() so that
1222         it only builds the parts that are currently out-of-date.
1223         Call hfs_{cap,dbl,nat}_buildmeta() through hfs_update_meta()
1224         in hfs_notify_change() and hfs_rename() to update the metadata.
1225 
1226         * dir.c:
1227         Make test for normal dir in update_dirs_{plus,minus}() more explicit.
1228 
1229         * inode.c, file_cap.c, file_dbl.c, file_nat.c, dir_dbl.c, dir_nat.c,
1230           file.c, README.sgml, dir_cap.c:
1231         Resolve the "meta-data" vs. "metadata" rivalry in favor of the latter.
1232 
1233         * btree.c:
1234         Simplify some debugging code.
1235 
1236         * hfs_btree_private.h, bnode.c, btree.c, balloc.c:
1237         Put the in-core copy of the header node IN the
1238         B-tree structure rather than just a pointer to it.
1239 
1240         * hfs_btree_private.h, btree.c, bnode.c:
1241         Have hfs_btree_commit() call hfs_bnode_commit()
1242         to commit the header and root nodes.
1243 
1244         * hfs_fs.h, super.c, hfs_btree_private.h, btree.c, hfs_btree.h,
1245           balloc.c:
1246         Change hfs_commit_mdb() to hfs_mdb_commit().
1247         Make hfs_mdb_commit() call hfs_btree_commit().
1248         Move code to update B-tree size and extent
1249         from hfs_btree_extend() to hfs_btree_commit().
1250         Make hfs_btree_extend() call hfs_mdb_commit().
1251 
1252         * super.c:
1253         Change hfs_commit_super() to hfs_commit_mdb().
1254 
1255         * btree.c, bnode.c, bfind.c:
1256         Fixed up broken debugging code and error messages.
1257 
1258         * super.c, hfs_btree_private.h, btree.c, hfs_btree.h, bdelete.c,
1259           binsert.c, balloc.c:
1260         Now use write-back caching of B-tree header fields.
1261 
1262         * hfs_fs.h:
1263         Get rid of the add{16,32}() inlines as they are no longer used.
1264 
1265         * hfs_btree_private.h, binsert.c, btree.c, bdelete.c, bfind.c, balloc.c:
1266         All the needed fields of the B-tree header are
1267         now cached for reading, but not yet writing.
1268 
1269         * TODO:
1270         Remove "Implement write count" from TODO list.
1271 
1272         * file.c, super.c, bnode.c:
1273         Implement write count.
1274 
1275         * catalog.c:
1276         Fix directory entry counting in hfs_cat_move().
1277 
1278         * balloc.c:
1279         Simplify hfs_btree_extend(), since the allocation
1280         request will get rounded up to the clumpsize.
1281 
1282         * extent.c:
1283         Honor clumpsize when allocating blocks to files.
1284 
1285         * file_cap.c, file_dbl.c, file_nat.c, super.c, dir.c, file.c,
1286           ccache.c, catalog.c, balloc.c:
1287         Mark 44 functions in need of commenting.
1288 
1289         * hfs_fs_sb.h, super.c, extent.c, hfs_fs.h, ccache.c, btree.c, balloc.c:
1290         Record clumpsize in allocation blocks rather than 512-byte blocks.
1291 
1292         * sysdep.h, super.c, TODO, balloc.c, hfs_fs_sb.h:
1293         Now updates the backup MDB when a B-tree grows.
1294 
1295         * extent.c:
1296         hfs_extent_free() had test against NULL backward.
1297         The result is that access to a file with extents in the extents
1298         B-tree would result in an infinite loop in hfs_cat_put().
1299 
1300         * hfs_fs_sb.h, super.c, hfs_fs.h:
1301         Reorganize partition map code to get size of partition
1302         in preparation for dealing with the alternate MDB.
1303 
1304 Fri Aug  9 03:25:13 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1305 
1306         * Makefile:
1307         Add make rules for README.{ps,info}
1308 
1309         * README, README.sgml, DOC, FAQ, Makefile, .cvsignore, 
1310         Merge CHANGES into ChangeLog.
1311         Merge DOC, FAQ and README into README.sgml.
1312         Add make rules for building README.{txt,dvi}
1313 
1314         * BUG_INFO, Makefile:
1315         Added a BUG_INFO script which attempts to collect some useful
1316         information which I'd like to see in every bug report I receive.
1317 
1318         * Makefile, version.c:
1319         Added version.c which contains a version string.
1320 
1321 Thu Aug  8 21:48:24 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1322 
1323         * trans.c:
1324         Fix Latin-1 -> Macintosh filename mapping to change colons to pipes.
1325 
1326         * trans.c:
1327         Fixed Mac->Latin-1 translation to behave as documented for the
1328         extended 8-bit characters without corresponding Latin-1 characters.
1329 
1330         * inode.c, super.c, file.c, hfs_fs_i.h, hfs_fs_sb.h, DOC:
1331         Added a conv={binary,text,auto} mount option similar to that of the
1332         msdos, hpfs and iso9660 filesystems, but applying only to data forks.
1333         As compared to those filesystems, HFS has the advantage that only a
1334         single CR need be converted to a NL, rather than a CR/NL sequence, so
1335         it is quite safe to seek in the file.
1336         Additionally the 'Type' field is far more reliable indicator of text
1337         files than a file extension.
1338 
1339         * super.c:
1340         Simplified parsing of mount options.
1341 
1342         * super.c:
1343         Oops!  The part=<n> mount option was being parsed in octal!
1344 
1345         * TODO:
1346         Remove "case=lower" from the list of goals.
1347 
1348         * super.c, hfs_fs.h, hfs_fs_sb.h, string.c, dir_dbl.c, dir_nat.c,
1349           dir_cap.c, DOC:
1350         Resurrect the case={asis,lower} mount option.
1351 
1352         * dir.c:
1353         Simpler test for "normal" directory in update_dirs_{plus,minus}().
1354 
1355         * hfs_fs_sb.h, super.c, dir.c, hfs_fs.h, catalog.c, DOC:
1356         Add mount options to specify what Type and Creator will be used for
1357         new files and change the default from NULLs to "????".
1358 
1359 Wed Aug  7 11:32:22 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1360 
1361         * catalog.c:
1362         In hfs_cat_next() use entry->cnid rather than the key of the initial
1363         brec to identify the end of the directory.
1364 
1365         * README:
1366         Update for pre-0.7 version.
1367 
1368         * hfs_fs.h:
1369         Create versioned module if CONFIG_MODVERSIONS is set in linux/config.h
1370 
1371         * TODO:
1372         Note need for special steps for unaligned accesses on some machines.
1373 
1374         * FAQ:
1375         Added Q0: What is HFS?
1376         Added Q7: Does hfs_fs work w/ 400k and 800k diskettes?
1377         Brought Q6 (about writability) up to date.
1378         Made a few other answers more verbose.
1379 
1380 Tue Aug  6 00:58:46 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1381 
1382         * Makefile:
1383         Changed 'snapshot' rule to include cvs tag command.
1384 
1385         * hfs_fs.h, dir_cap.c, dir_dbl.c, dir_nat.c, catalog.c, ccache.c:
1386         Implemented readers half of dir locking scheme so readdir() should
1387         produce consistent results and count_dir_entries() is not race prone.
1388 
1389         * catalog.c:
1390         hfs_cat_move() was calling hfs_cat_decache() after changing
1391         the key rather than before, corrupting the hash lists.
1392 
1393 Mon Aug  5 14:03:46 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1394 
1395         * hfs_fs.h, catalog.c:
1396         Implemented the writers half of a locking scheme for directories.
1397 
1398         * inode.c:
1399         Fixed a serious bug in hfs_notify_change() that would allow a chmod()
1400         on directory meta-data and would cause the directory inode (if it was
1401         in memory at the time) to change into a file inode.
1402 
1403         * inode.c:
1404         Fixed a problem with write permissions on directory meta-data.
1405 
1406         * dir_dbl.c, dir_nat.c, dir_cap.c:
1407         hfs_{cap,dbl,nat}_readdir() now return the correct value in the 'd_ino'
1408         field of the dirent for all cases, something I think has always been
1409         done incorrectly until now.
1410 
1411         * dir_nat.c, inode.c, dir_cap.c:
1412         In hfs_{cap,nat}_lookup() take advantage of the
1413         'file_type' field of (struct hfs_inode_info).
1414 
1415         * TODO:
1416         Removed two accomplished goals (rename() and improved readdir()).
1417 
1418         * inode.c, dir_dbl.c, dir_nat.c, hfs_fs_i.h, dir.c, dir_cap.c:
1419         Rewrite hfs_{cap,dbl,nat}_readdir() to take advantage of hfs_cat_next().
1420         They now use a uniform 'i_size' for all inodes for a given directory.
1421         This simplifies update_dirs_{plus,minus}() and eliminates the need for
1422         the 'file_size' and 'dir_link' fields of (struct hfs_inode_info).
1423         For the CAP and Netatalk schemes the meta-data directories are now the
1424         last entries rather than coming just after '.' and '..'.  This is in
1425         preparation for the day when we can write to the files in those
1426         directories, and ensures that when using 'tar' to copy HFS filesystems
1427         the file or directory will be created before the meta-data is written.
1428         Otherwise we could be stuck writing meta-data and not knowing if it is
1429         for a file or a directory!
1430 
1431         * ccache.c:
1432         Updated count_dir_entries() for new hfs_cat_next().
1433 
1434         * hfs_fs.h, catalog.c:
1435         hfs_cat{nth,next}() no longer take a 'types' argument,
1436         so they now return all entries.
1437         hfs_cat_next() now uses the ParID of the key to detect
1438         the end of the directory.
1439         hfs_cat_nth() now accepts n=0 as a valid input, requesting the thread.
1440 
1441         * trans.c, string.c, super.c, dir_nat.c, hfs_fs.h, dir.c, dir_cap.c,
1442           dir_dbl.c, catalog.c:
1443         Rename (struct hfs_cname) to the more appropriate (struct hfs_pstr).
1444 
1445         * hfs_fs.h, hfs_btree.h:
1446         Move some constants from hfs_fs.h to hfs_btree.h
1447 
1448         * bdelete.c, hfs_btree.h:
1449         Remove hfs_bdelete_brec() from public B-tree interface.
1450 
1451         * hfs_btree_private.h, hfs_fs.h, btree.c, hfs_btree.h, bnode.c, brec.c,
1452           bfind.c, bins_del.c, binsert.c, balloc.c, bdelete.c, Makefile:
1453         Split B-tree stuff into public and private parts:
1454                 brec.c split into bfind.c and brec.c
1455                 hfs_btree.h split into hfs_btree.h and hfs_btree_private.c
1456 
1457         * inode.c:
1458         The tests and sets of the HFS_FIL_LOCK bit where all reversed!
1459 
1460         * hfs_fs.h, ccache.c:
1461         Redo some ccache stuff, removing the 'error' field from
1462         (struct hfs_cat_entry) and ensuring that hfs_cat_put()
1463         will not sleep on an uninitialized entry.
1464 
1465 Sun Aug  4 23:43:28 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1466 
1467         * sysdep.h:
1468         Change swap{16,32}() back to macros since hton[ls]() are functions.
1469 
1470         * hfs_fs.h, ccache.c:
1471         Use only lowest order byte of parent CNID in hashing a catalog key.
1472 
1473         * bdelete.c:
1474         The "improved" bdelete() was TOO paranoid looking for missing parents.
1475 
1476         * ccache.c:
1477         Get rid of pointless swap16const(0).
1478 
1479         * hfs_fs.h, inode.c, extent.c, ccache.c, dir_cap.c, dir_nat.c,
1480           binsert.c, catalog.c:
1481         Store cnid and associated constants in big-endian byte order.
1482         This reduces the number of byte-order swaps required.
1483 
1484         * sysdep.h:
1485         Make swap32() and swap16() inline functions.
1486 
1487         * dir_nat.c, dir_cap.c, dir_dbl.c:
1488         Added hfs_rename() to the inode_operations for normal directories.
1489 
1490         * dir.c, hfs_fs.h:
1491         Added hfs_rename() and cleaned up hfs_{create,mkdir,unlink,rmdir}().
1492 
1493         * catalog.c:
1494         Added the missing check for moving a directory into itself.
1495 
1496         * catalog.c, ccache.c, hfs_fs.h:
1497         Implement a nearly ideal hfs_cat_move().
1498         It still needs to prevent moving a directory into itself.
1499         The functions hfs_cat_{create,delete,move}() still need work with
1500         respect to their atomicity (especially vs. readdir).
1501 
1502         * bdelete.c:
1503         Fixed a serious bug in hfs_bdelete_brec() that would yield a corrupted
1504         b-tree when the first record in a bnode was deleted.
1505         Made bdelete() more aggressive when checking for missing parents.
1506 
1507 Sat Aug  3 06:11:50 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1508 
1509         * btree.c, super.c:
1510         Fixed a problem that caused a kernel oops when no HFS filesystem
1511         is found.
1512 
1513 Wed Jul 24 13:06:12 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1514 
1515         * catalog.c:
1516         Remove race in hfs_cat_create() that could overflow directory valence.
1517 
1518         * catalog.c:
1519         Fix hfs_cat_create() so the parent directory doesn't get deleted
1520         out from under it.  Otherwise we could have created files and
1521         directories in deleted directories.
1522 
1523         * hfs_fs.h, dir_cap.c, dir_dbl.c, dir_nat.c, catalog.c, ccache.c:
1524         Redo hfs_cat_{next,nth}() in terms of which entry types to
1525         allow, rather than which to skip.
1526 
1527         * catalog.c:
1528         The function hfs_cat_create() would fail to hfs_cat_put(entry) if
1529         the 'record' argument was invalid or if the 'result' argument was NULL.
1530 
1531         * dir.c:
1532         The functions hfs_{create,mkdir,unlink,rmdir} all failed to
1533         call iput() when their arguments conflicted with a reserved name.
1534 
1535         * catalog.c, hfs_fs_sb.h:
1536         Start over on rename().  Still unfinished.
1537         Fix silly bug in hfs_cat_create() that made it always fail.
1538 
1539         * ccache.c:
1540         Fix byte-order bug in write_entry().
1541 
1542 Tue Jul 23 12:12:58 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1543 
1544         * dir_dbl.c, dir_nat.c, hfs_fs.h, dir.c, dir_cap.c:
1545         Remove the macros KEY() and PARENT() since the key is now easy
1546         to access through the catalog entry.
1547         Replace the macros NAME{IN,OUT}() with inline functions
1548         hfs_name{in,out}() to gain type checking of arguments.
1549 
1550         * catalog.c:
1551         Remove the macro TYPE().
1552 
1553         * inode.c, file_dbl.c, file_nat.c, file.c, file_cap.c:
1554         Remove the #define's of the unused macro KEY().
1555 
1556         * hfs_fs.h, dir_cap.c, dir_dbl.c, dir_nat.c, catalog.c, dir.c:
1557         Replace hfs_lookup_parent() in dir.c with hfs_cat_parent() in catalog.c.
1558         This new function performs locking to protect against rename() changing
1559                 the parent during I/O.
1560         It is also intended for use with files as well as directories.
1561         Change hfs_{cap,dbl,nat}_lookup() to use the new function.
1562 
1563         * dir.c, hfs_fs.h, catalog.c:
1564         Remerge hfs_cat_{create,mkdir}() into hfs_cat_create() and resurrect
1565                 hfs_cat_new_{file,dir}().
1566         Fix hfs_cat_{create,delete} to use the improved catalog cache for
1567                 locking in place of directory-level create/delete locks.
1568         Fix hfs_{create,mkdir}() to use the new hfs_cat_create().
1569 
1570         * hfs_fs.h, ccache.c:
1571         Rewrite parts to remove need for specialized create/delete locking.
1572         Use new case-independent hash function.
1573         Fix bug in hfs_cat_get() that would read an entry w/o locking it.
1574         Call hfs_relinquish() before retrying a deleted entry in hfs_cat_get.
1575         If there is a read error, then don't retry in hfs_cat_get().
1576         Remove unused 'version' field from (struct hfs_cat_entry).
1577 
1578         * sysdep.h:
1579         Add hfs_relinquish(), a system-independent alias for schedule().
1580 
1581         * hfs_fs.h, string.c:
1582         Add hfs_strhash(), a simplistic case-independent hash function.
1583 
1584         * hfs_fs.h, inode.c:
1585         Make hfs_iget() an inline function.
1586 
1587         * TODO:
1588         Add a few goals and removed those that have been achieved.
1589 
1590         * Makefile:
1591         Add ccache.c to list of source files.
1592         Add rule for *.s files and include them in the 'clean' rule.
1593 
1594 Wed Jul 17 17:22:45 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1595 
1596         * sysdep.h, trans.c, string.c, super.c, hfs_fs_i.h, hfs_fs_sb.h,
1597           inode.c, hfs_btree.h, hfs_fs.h, file_dbl.c, file_nat.c, extent.c,
1598           file.c, file_cap.c, dir_dbl.c, dir_nat.c, ccache.c, dir.c,
1599           dir_cap.c, btree.c, catalog.c, bnode.c, brec.c, balloc.c:
1600         Total rewrite of the inode-handling stuff to be centered around
1601         a catalog entry cache (ccache.c).  This results not only in a far
1602         more sensible way of doing things, but also removed many race
1603         conditions. (The source and object code both got smaller too!)
1604         Many small "undocumented features" were also fixed.
1605         Replace HFS_CNAME with (struct hfs_cname).
1606         rename() has been temporarily abandoned.
1607 
1608 Thu Jul 11 01:14:38 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1609 
1610         * dir.c:
1611         As written hfs_lookup_parent() had two overlapping read requests
1612         in the catalog tree.  This could have led to deadlock.
1613 
1614 Wed Jul 10 09:27:00 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1615 
1616         * catalog.c, hfs_fs.h, bdelete.c:
1617         More work on getting rename() fleshed out.  Still not done.
1618         Before I can finish it looks like I'll need to build a
1619         mechanism for exclusive access to the catalog tree.  There
1620         just doesn't seem to be any other way to get proper POSIX
1621         semantics without a bunch of race conditions elsewhere.
1622 
1623         * hfs_fs.h, inode.c, dir_cap.c, dir_dbl.c, dir_nat.c, catalog.c:
1624         More work on the still incomplete rename() code.
1625         Merge hfs_cat_add_{dir,file}() into hfs_cat_create().
1626         Add file-thread support to hfs_cat_{create,delete,rename}.
1627 
1628 Tue Jul  9 09:43:15 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1629 
1630         * inode.c, dir_dbl.c, dir_nat.c, extent.c, dir_cap.c:
1631         The indirect (struct hfs_file) was causing blocks not to be freed
1632         when files where deleted, and an omission in hfs_put_inode() was
1633         preventing the inode from getting freed.  Both are now fixed.
1634 
1635         * hfs_fs.h, dir_dbl.c, dir_nat.c, hfs_btree.h, catalog.c, dir_cap.c,
1636           bdelete.c:
1637         Made unlink() and rmdir() more race resistant and did some more
1638         work on the still incomplete code for rename().
1639 
1640         * btree.c, bnode.c:
1641         There was a serious race condition in the bnode cache, so
1642         hfs_bnode_find() is now modeled after Linus's inode cache.
1643 
1644 Mon Jul  8 10:33:38 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1645 
1646         * hfs_fs_i.h, inode.c, file_cap.c, file_dbl.c, file_nat.c, dir_dbl.c,
1647           dir_nat.c, file.c, dir.c, dir_cap.c:
1648         More changes to layout of (struct hfs_inode_info).
1649 
1650         * super.c, inode_cap.c, inode_dbl.c, inode_nat.c, inode.c, hfs_fs_i.h,
1651           hfs_fs_sb.h, file_nat.c, hfs_fs.h, file.c, file_cap.c, file_dbl.c,
1652           Makefile, catalog.c:
1653         Implemented new layout for (struct hfs_inode_info) resulting in the
1654         elimination of lots of duplicated code for hfs_*_write_inode(),
1655         hfs_*_put_inode() and *_open() functions.
1656         Merged inode_*.c files back into inode.c.
1657         Not fully tested.
1658 
1659         * TODO:
1660         Add a few more of my goals to the list.
1661 
1662         * README:
1663         Documentation updates.
1664 
1665         * inode_nat.c, inode_cap.c, inode_dbl.c, inode.c, hfs_fs.h, hfs_fs_i.h,
1666           file.c, file_cap.c, file_dbl.c, file_nat.c, catalog.c:
1667         (struct hfs_file) and metadata are read when file is opened or
1668         truncated and are released by iput().
1669 
1670 Sun Jul  7 23:55:43 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1671 
1672         * inode_nat.c, inode_cap.c, inode_dbl.c, inode.c, dir_nat.c, hfs_fs.h,
1673           hfs_fs_i.h, dir_cap.c, dir_dbl.c, catalog.c, dir.c:
1674         (struct hfs_dir) is now inside (struct hfs_inode_info) once again.
1675 
1676         * inode_nat.c, super.c, inode_cap.c, inode_dbl.c, inode.c, file_nat.c,
1677           hfs_btree.h, hfs_fs.h, extent.c, file_cap.c, file_dbl.c, dir_nat.c,
1678           dir_cap.c, dir_dbl.c, btree.c, catalog.c, dir.c, bpath.c, brec.c,
1679           bins_del.c, binsert.c, bnode.c, bfind.c, balloc.c, bdelete.c,
1680           Makefile:
1681         Remerged (struct hfs_bpath) and (struct hfs_brec), merging the
1682         files bfind.c and bpath.c as a resurrected brec.c.
1683 
1684 Sat Jul  6 21:47:05 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1685 
1686         * inode_cap.c, inode_dbl.c, inode_nat.c, inode.c, hfs_fs.h, hfs_fs_i.h,
1687           file_cap.c, file_dbl.c, file_nat.c, hfs_btree.h, dir_nat.c, extent.c,
1688           dir.c, dir_cap.c, dir_dbl.c, btree.c, catalog.c, bfind.c, bpath.c,
1689           binsert.c, bdelete.c:
1690         Renamed (struct hfs_brec_key) to (struct hfs_bkey).
1691 
1692 Tue May 28 07:53:24 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1693 
1694         * inode_cap.c, catalog.c:
1695         Spelling fixes.
1696 
1697         * inode_nat.c, super.c, inode_cap.c, inode_dbl.c, inode.c, hfs_fs.h,
1698           hfs_fs_i.h, hfs_fs_sb.h, file.c, file_dbl.c, file_nat.c, dir_dbl.c,
1699           dir_nat.c, extent.c, dir.c, dir_cap.c, catalog.c:
1700         Structures got too big, so I had to add a layer of indirection
1701         to (struct hfs_inode_info).
1702         This means we must clear_inode() in inode_put().
1703 
1704 Mon May 27 01:32:42 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1705 
1706         * catalog.c, file_cap.c:
1707         Some sizeof() stuff now uses variable not type.
1708 
1709         * hfs_fs.h:
1710         Make HFS_I() and HFS_SB() inline to gain type checking.
1711 
1712 Sun May 26 13:34:17 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1713 
1714         * dir_nat.c:
1715         Oops.  Had left some debugging printk()s in place.
1716 
1717         * file_dbl.c, file_nat.c, file_cap.c:
1718         Cleaned up variable names for consistency.
1719 
1720         * hfs_fs_sb.h:
1721         Add a couple 'const's to function typedefs.
1722 
1723         * hfs_fs.h:
1724         Add and update function prototypes.
1725         Cleaned up type names.
1726         Fix debugging malloc code.
1727         Add hfs_iget_by_name() as an inline function.
1728 
1729         * sysdep.h:
1730         Remove extra semicolon from macro definitions.
1731 
1732         * super.c:
1733         Use new hfs_iget_by_name() to get root inode.
1734 
1735         * extent.c:
1736         Cleaned up some variable naming for consistency.
1737 
1738         * catalog.c:
1739         Added (untested) code for hfs_cat_move_file().
1740 
1741         * catalog.c:
1742         Fix one missed call to hfs_cat_build_key().
1743         Make hfs_cat_add_{file,dir}() take a cat_entry as an argument.
1744         Add hfs_cat_new_{file,dir}() to generate new cat_entry's.
1745 
1746         * dir_dbl.c, dir_nat.c, dir.c, dir_cap.c:
1747         Cleaned up type and variable names.
1748         Updated calls to hfs_cat_build_key() and NAMEOUT()
1749         Use new hfs_iget_by_*() calls.
1750 
1751         * inode_cap.c, inode_dbl.c, inode_nat.c:
1752         Cleaned up type and variable names.
1753 
1754         * inode.c:
1755         Update calls to hfs_cat_build_key().
1756         Cleaned up type and variable names.
1757         Implemented a hierarchy of hfs_iget_by*() calls.
1758 
1759         * catalog.c:
1760         Change hfs_cat_build_key() to take a HFS_CNAME as input.
1761 
1762         * btree.c:
1763         Initialize lsize and psize fields of file.
1764 
1765         * trans.c:
1766         Now passes type HFS_CNAME and has name/len in "normal" order.
1767 
1768 Tue May 21 07:02:34 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1769 
1770         * bnode.c:
1771         Attempt to read invalid bnode would have led to an infinite loop under
1772         certain circumstances.  One way to cause this was with an invalid
1773         partition table which points beyond the end of the device.
1774 
1775 Sat May 11 12:38:42 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1776 
1777         * sysdep.h, sysdep.c, inode_dbl.c, inode_nat.c, super.c, inode_cap.c,
1778           inode.c, hfs_fs.h, hfs_fs_i.h, hfs_fs_sb.h, file_dbl.c, file_nat.c,
1779           hfs_btree.h, extent.c, file.c, file_cap.c, dir_nat.c, dir.c,
1780           dir_cap.c, dir_dbl.c, btree.c, catalog.c, bitmap.c, bitops.c,
1781           bnode.c, bfind.c, bins_del.c, binsert.c, balloc.c, bdelete.c:
1782         Another big wave of portability-oriented changes.
1783 
1784 Tue May  7 11:28:35 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1785 
1786         * super.c, sysdep.c, sysdep.h, inode_cap.c, inode_dbl.c, inode_nat.c,
1787           hfs_fs_i.h, inode.c, file_nat.c, hfs_btree.h, hfs_fs.h, file.c,
1788           file_cap.c, file_dbl.c, dir_nat.c, extent.c, dir_cap.c, dir_dbl.c,
1789           btree.c, catalog.c, dir.c, bnode.c, bpath.c, binsert.c, bitmap.c,
1790           bitops.c, bdelete.c, bfind.c, bins_del.c, Makefile, balloc.c:
1791         Start a big move to abstract all the Linux-specific stuff
1792         out of the lower levels.  Created sysdep.[ch] to hold it.
1793 
1794         * FAQ, TODO:
1795         Bring some documentation up-to-date.
1796 
1797 Fri May  3 20:15:29 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1798 
1799         * super.c, inode_dbl.c, inode_nat.c, inode.c, inode_cap.c, extent.c,
1800           hfs_fs.h, hfs_fs_i.h, dir_dbl.c, dir_nat.c, catalog.c, dir.c,
1801           dir_cap.c, bpath.c, btree.c, binsert.c, bnode.c:
1802         "FID reform": 'fid' became 'cnid' (Catalog Node ID), and is now
1803         a field in (struct hfs_file).  The new name is more consistent
1804         with Apple's documentation.  The presence of 'cnid' in (struct
1805         hfs_file) help move more of the code toward OS-independence.
1806 
1807         * inode_nat.c, super.c, trans.c, inode.c, inode_cap.c, inode_dbl.c,
1808           hfs_fs.h, file_cap.c, file_dbl.c, file_nat.c, dir_nat.c, extent.c,
1809           file.c, dir.c, dir_cap.c, dir_dbl.c, btree.c, catalog.c, bnode.c,
1810           bpath.c, bins_del.c, binsert.c, bitmap.c, bitops.c, bdelete.c,
1811           bfind.c, balloc.c:
1812         A lot of changes in what headers are included and in what order.
1813 
1814 Sat Apr 27 12:28:54 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1815 
1816         * FAQ:
1817         Updated for current writability status.
1818 
1819         * .cvsignore:
1820         Added ChangeLog.
1821 
1822         * file_dbl.c, file_nat.c, file_cap.c, file.c, dir_dbl.c, dir_nat.c,
1823           dir_cap.c:
1824         Added the default fsync() to all file_operations structures.
1825 
1826         * dir_nat.c, hfs_fs.h, dir.c, dir_cap.c, dir_dbl.c:
1827         Add rmdir() for normal directories.
1828 
1829         * binsert.c:
1830         I had messed up insertion so that is would sometime fail to
1831         split the root, but its OK now.
1832 
1833         * dir.c:
1834         hfs_do_unlink() decremented directory counts rather than file counts.
1835 
1836 Wed Apr 24 13:20:08 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1837 
1838         * hfs_fs.h, bnode.c, hfs_btree.h:
1839         Fixed a couple more type size assumptions.
1840 
1841         * hfs_fs.h, balloc.c, bitmap.c, bitops.c:
1842         "Portable" bitmap handling was wrong for just about everything but
1843         the i386 and the "inverse big-endian" bit ordering that I thought
1844         the m68k port was using.  It seems the m68k port is now using standard
1845         big-endian bit-numbering conventions.
1846         This code is now correct for the standard big- and little-endian bit
1847         orderings. (which should cover all Linux systems?)
1848         Also no longer assumes sizeof(long) == 4, though that might still be
1849         a problem in other parts of the code.
1850 
1851 Tue Apr 23 19:19:27 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1852 
1853         * FAQ:
1854         Bring uptodate for this snapshot.
1855 
1856         * Makefile:
1857         Add FAQ to $(MISC)
1858 
1859         * README, TODO:
1860         Documentation updates.
1861 
1862         * bdelete.c:
1863         Spelling fixes.
1864 
1865         * dir_cap.c:
1866         In unlink() don't force metadata into memory if not present.
1867 
1868         * bdelete.c:
1869         Some function comments and some clean up.
1870 
1871         * bins_del.c:
1872         Added missing function comment for hfs_bnode_update_key().
1873 
1874         * binsert.c, bitmap.c:
1875         Spelling and grammar corrections to comments.
1876 
1877         * hfs_btree.h, hfs_fs.h, bins_del.c, binsert.c, Makefile, bdelete.c:
1878         Clean up of hfs_bdelete(), splitting bins_del.c into three files:
1879                 bins_del.c, binsert.c and bdelete.c
1880 
1881         * bpath.c, bins_del.c:
1882         hfs_bdelete() is now working "correctly", but needs some cleaning up.
1883 
1884 Mon Apr 22 05:35:41 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1885 
1886         * hfs_fs.h, bpath.c, hfs_btree.h, bins_del.c, bnode.c, balloc.c,
1887           bfind.c:
1888         Rewrite bnode handling, heading toward a more write-behind approach.
1889         Have done away with HFS_LOCK_BLIND.
1890 
1891         * inode_dbl.c, inode_nat.c, extent.c, hfs_fs_i.h, inode_cap.c:
1892         Was trying to truncate resource fork of directories!
1893 
1894 Sun Apr 21 08:15:43 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1895 
1896         * balloc.c:
1897         Updated to use truncate() to grow full trees.
1898 
1899         * extent.c, hfs_fs.h, file.c, inode.c:
1900         Added truncate() for normal files.
1901 
1902         * bins_del.c:
1903         hfs_bdelete() fixes for handling removal of root.
1904 
1905         * inode_cap.c, inode_dbl.c, inode_nat.c:
1906         Release storage for deleted files in hfs_*_put_inode().
1907 
1908         * bitmap.c:
1909         Make len=0 valid for hfs_{set,clear}_vbm_bits().
1910 
1911         * super.c, inode.c, hfs_fs_i.h, hfs_fs_sb.h, btree.c, balloc.c:
1912         Changed from clumpsize to clumpblks.
1913 
1914         * inode_nat.c, hfs_fs.h, inode_cap.c, inode_dbl.c, btree.c, extent.c,
1915           balloc.c:
1916         Some extent-related changes in preparation for truncate() support.
1917 
1918 Sat Apr 20 10:59:13 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1919 
1920         * inode_nat.c, hfs_fs_i.h, inode.c, inode_cap.c, inode_dbl.c,
1921           dir_nat.c, hfs_fs.h, dir.c, dir_cap.c, dir_dbl.c:
1922         Removed dir.valence from hfs inode.
1923         Added unlink(), but still need truncate() and some more support
1924         in hfs_*_put_inode() to free the disk space used by deleted files.
1925 
1926         * bnode.c:
1927         Check for NULL bnode in hfs_bnode_relse().
1928 
1929         * bins_del.c:
1930         Fixed a byte-order problem in bdelete_nonempty().
1931 
1932         * hfs_fs.h, bnode.c, bpath.c, hfs_btree.h, balloc.c, bins_del.c:
1933         First attempt at hfs_bdelete().
1934 
1935         * dir.c:
1936         The Finder would display strange things if it couldn't set frView.
1937         Therefore initialize frView field for new directories.
1938 
1939         * file_cap.c, file_dbl.c, file_nat.c, hfs_fs.h:
1940         Define User/Finder info fields of catalog entry in more detail.
1941 
1942         * hfs_fs.h:
1943         HFS_BFIND_DELETE should require exact match.
1944 
1945         * dir.c:
1946         Set "record in use" bit of filFlags for new files.
1947 
1948         * inode.c:
1949         Was doing the wrong thing with i_ctime.
1950 
1951         * dir_nat.c, dir_cap.c, dir_dbl.c:
1952         Added some missing updates to the inode in hfs_*_{create,mkdir}().
1953 
1954 Sun Apr 14 00:10:52 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1955 
1956         * hfs_fs.h, file_dbl.c, file_nat.c, file.c:
1957         Work around the ever-changing type of f_reada.
1958 
1959 Sat Apr 13 00:43:41 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1960 
1961         * bpath.c, bfind.c:
1962         Spelling corrections in comments.
1963 
1964         * bins_del.c:
1965         ifdef out shift_left() until it is actually used.
1966 
1967         * hfs_btree.h, hfs_fs.h, bins_del.c, bpath.c, bfind.c:
1968         Cleaned up code related to 'flags' argument to hfs_bpath_find().
1969 
1970 Fri Apr 12 23:30:01 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
1971 
1972         * bpath.c:
1973         Updated comments.
1974         Rewrote hfs_bpath_init() and hfs_bpath_next().
1975 
1976         * hfs_btree.h:
1977         Updated prototype for hfs_bpath_init().
1978 
1979         * bins_del.c:
1980         Updated call to hfs_bpath_init().
1981 
1982         * inode.c, inode_cap.c, inode_dbl.c, inode_nat.c, extent.c, file_cap.c,
1983           file_dbl.c, file_nat.c, dir_cap.c, dir_dbl.c, dir_nat.c, catalog.c,
1984           dir.c:
1985         Renamed hfs_brec_relse() to hfs_brelse().
1986 
1987         * hfs_fs.h, hfs_btree.h:
1988         Updated prototypes to reflect new names in bpath.c
1989 
1990         * bins_del.c:
1991         Updated calls to functions in bpath.c
1992         Updated comments.
1993 
1994         * Makefile:
1995         Renamed brec.c to bpath.c
1996 
1997         * bfind.c:
1998         Updated calls to functions in bpath.c
1999         Added hfs_brelse() which was previously hfs_brec_relse() in brec.c
2000 
2001         * bpath.c:
2002         brec.c renamed to bpath.c
2003         Functions renamed to reflect their current actions.
2004         Comments are still out of date.
2005         hfs_brec_relse() renamed to hfs_brelse() and moved to bfind.c
2006 
2007         * brec.c:
2008         brec.c renamed to bpath.c
2009 
2010 Wed Apr 10 07:20:28 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
2011 
2012         * hfs_fs.h, extent.c, hfs_btree.h, brec.c, dir.c, bfind.c,
2013           bins_del.c:
2014         Backed-out changes to hfs_binsert() that added the ability to
2015         return the new record, since it will probably not ever be needed.
2016 
2017         * extent.c:
2018         Since 1.3.45 truncate() has locked the file, so there is no need
2019         for all the things I've been doing to hfs_file_extend() & new_extent().
2020         Those two functions have been cleaned up a bit (similar to older forms).
2021 
2022         * extent.c:
2023         hfs_file_extend() now more "robust", but new_extent() is still
2024         not fully "concurrency safe."
2025 
2026 Tue Apr  9 09:01:18 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
2027 
2028         * bins_del.c:
2029         Made split() inline.
2030 
2031         * inode.c, dir_nat.c, hfs_fs.h, dir_cap.c:
2032         Added hfs_itry() to get in-core inodes.
2033 
2034         * inode_dbl.c, inode_nat.c, hfs_fs.h, inode.c, inode_cap.c, file_dbl.c,
2035           file_nat.c, hfs_btree.h, extent.c, file_cap.c, dir_cap.c, dir_dbl.c,
2036           dir_nat.c, brec.c, catalog.c, dir.c, bins_del.c, bnode.c,
2037           bfind.c:
2038         Rewrite of all the (struct hfs_brec) stuff.
2039 
2040 Mon Apr  8 21:50:01 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
2041 
2042         * btree.c, extent.c, bnode.c:
2043         Fixed format strings in a few debugging printk()'s.
2044 
2045         * brec.c, hfs_fs.h:
2046         Removed hfs_brec_relse_one().
2047 
2048         * hfs_fs.h, bnode.c, brec.c, hfs_btree.h, bfind.c, bins_del.c, balloc.c:
2049         (struct hfs_bnode_ref)s are now returned by value rather than reference
2050         and they are in (struct hfs_brec) rather than pointed to.  Cuts down on
2051         a lot of kmalloc() and kfree() traffic.
2052 
2053         * hfs_fs.h, dir.c, extent.c, bins_del.c:
2054         Modified hfs_binsert() to be able to return the new record.
2055 
2056         * bins_del.c, hfs_btree.h:
2057         Added shift_left(), still untested.
2058 
2059         * bins_del.c:
2060         new_root() was missing its comment.
2061 
2062         * super.c, trans.c, hfs_fs_i.h, inode.c, inode_dbl.c, inode_nat.c,
2063           file_nat.c, hfs_btree.h, hfs_fs.h, file.c, file_dbl.c, dir_dbl.c,
2064           dir_nat.c, extent.c, dir.c, dir_cap.c, bitops.c, bnode.c, brec.c,
2065           bfind.c, bins_del.c, bitmap.c, balloc.c:
2066         Fixed lines over 80 characters and tabified files.
2067 
2068         * bins_del.c:
2069         Fixed line(s) over 80 columns.
2070 
2071         * trans.c, inode_nat.c, string.c, super.c, inode.c, inode_cap.c,
2072           inode_dbl.c, hfs_fs_i.h, hfs_fs_sb.h, hfs_btree.h, hfs_fs.h, file.c,
2073           file_cap.c, file_dbl.c, file_nat.c, dir_dbl.c, extent.c, btree.c,
2074           dir_cap.c, bitops.c, bnode.c, brec.c, bfind.c, bins_del.c, bitmap.c,
2075           DOC, README, TODO, balloc.c, CHANGES:
2076         About 150 spelling corrections.
2077 
2078 Sun Apr  7 23:14:28 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
2079 
2080         * dir_cap.c, dir_dbl.c, dir_nat.c, dir.c:
2081         Cleaned-up check for special names in mkdir().
2082 
2083         * extent.c:
2084         More verbose error message.
2085 
2086         * inode_dbl.c, inode_nat.c, hfs_fs_i.h, inode.c, inode_cap.c, dir.c,
2087           hfs_fs.h:
2088         Limit directories to 32767 entries, since Mac uses 16-bit integer.
2089 
2090 Fri Apr  5 07:27:57 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
2091 
2092         * FAQ:
2093         Initial version.
2094 
2095         * dir_dbl.c, dir_nat.c, bins_del.c, dir.c, dir_cap.c:
2096         Added missing function comments.
2097 
2098 Wed Apr  3 06:38:36 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
2099 
2100         * brec.c:
2101         Cleaned-up code for brec->flags.
2102 
2103         * extent.c:
2104         Added function comments.
2105 
2106         * bins_del.c:
2107         Added function comments.
2108         hfs_binsert() was incrementing record count even on failure.
2109 
2110 Mon Apr  1 08:35:51 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
2111 
2112         * extent.c:
2113         Rewrote find_ext() and new_extent() for new hfs_btree_extend().
2114         Moved hfs_btree_extend() to balloc.c
2115         Fixed potential kernel OOPS in new_extent().
2116 
2117         * brec.c:
2118         Fixed potential kernel OOPS in hfs_brec_get_root().
2119         Removed hfs_brec_find_first().
2120         Fixed return value of hfs_brec_find().
2121 
2122         * bins_del.c:
2123         Updated call to hfs_btree_extend().
2124 
2125         * balloc.c:
2126         Merged hfs_bnode_add() and hfs_btree_extend() into the later.
2127         Commented init_mapnode().
2128 
2129         * bfind.c:
2130         Removed hfs_bfind_first().
2131 
2132         * hfs_fs.h, hfs_btree.h:
2133         Updated prototypes.
2134 
2135 Sat Mar 30 22:56:47 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
2136 
2137         * CHANGES, README, TODO:
2138         Updated documentation in preparation for 0.6 release.
2139 
2140         * inode.c, hfs_fs.h:
2141         Got rid of HFS_FAKE_EXEC in favor of noexec mount option.
2142 
2143         * inode.c, super.c, DOC, hfs_fs_sb.h:
2144         Added "quiet" mount option, like the fat filesystem.
2145 
2146         * inode.c, dir_cap.c, dir_nat.c:
2147         Pseudo-directories are read-only (at least for now).
2148 
2149         * hfs_fs.h, dir_dbl.c, dir_nat.c, dir.c, dir_cap.c:
2150         mkdir() updated to check against reserved names, but the
2151         AppleDouble scheme still has problems with names starting with '%'.
2152 
2153         * dir_dbl.c, dir_nat.c, hfs_fs.h, dir.c, dir_cap.c:
2154         Added mkdir(). (It only took 2 tries to get it right!!)
2155         Only works in "normal" directories and doesn't yet stop
2156         one from creating dirs with the reserved names.
2157 
2158         * brec.c, extent.c, bins_del.c:
2159         Now have a way to get an EEXIST back from hfs_binsert().
2160 
2161         * btree.c, inode.c, hfs_fs_i.h, file.c, bfind.c, bnode.c, balloc.c:
2162         Added 'dev' field to struct hfs_file.
2163 
2164         * hfs_fs_i.h, inode.c, btree.c, extent.c, file.c, bnode.c, brec.c,
2165           balloc.c:
2166         Removed duplicated fields from struct hfs_file since
2167         even B*-trees now have that information in the inode.
2168 
2169         * extent.c:
2170         zero_blocks() neglected allocation block size in computing start.
2171 
2172 Fri Mar 29 16:04:37 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
2173 
2174         * super.c:
2175         hfs_statfs(): f_files and f_ffree fields are now -1, which is
2176         documented as the value for "undefined" fields in struct statfs.
2177 
2178         * trans.c, inode_nat.c, string.c, super.c, inode_dbl.c, inode_cap.c,
2179           inode.c, file_nat.c, file_dbl.c, file_cap.c, file.c, dir_dbl.c,
2180           extent.c, dir_cap.c, catalog.c, btree.c, brec.c, bnode.c, bitops.c,
2181           bitmap.c, bins_del.c, balloc.c:
2182         Stylistic editing: {} for all 'for', 'while' and 'if' blocks.
2183         I hope I didn't screw-up anything.
2184 
2185         * hfs_fs.h, dir.c, dir_cap.c, dir_dbl.c, dir_nat.c:
2186         Added creation of normal files to all three fork schemes!
2187         Strange things may happen when trying to create "non-normal" files.
2188 
2189         * brec.c:
2190         Cleaned up some debugging code.
2191 
2192         * hfs_fs_i.h:
2193         File and directory counts could have overflown 16-bit integer.
2194 
2195         * hfs_btree.h:
2196         Added HFS_BREC_RIGHT to help fix insertion problem.
2197 
2198         * extent.c:
2199         Various fixes to hfs_{file,btree}_extend().
2200 
2201         * catalog.c:
2202         Made hfs_build_cat_key() more "correct".
2203 
2204         * btree.c:
2205         Added and fixed debugging code.
2206 
2207         * brec.c:
2208         Fixed overflow detection.
2209         Added some debugging code.
2210 
2211         * bnode.c:
2212         Dirtied some buffers in places that might have been missed.
2213         Fixed some debugging code that had broken.
2214 
2215         * bitops.c:
2216         hfs_count_free_bits() was running off end of bitmap.
2217 
2218         * bins_del.c:
2219         Fixed various bugs, mostly related to variable-length keys.
2220 
2221         * balloc.c:
2222         Had forgotten to set a bit in new mapnodes.
2223         Node counts were overflowing 16-bit integers.
2224 
2225         * bitmap.c:
2226         Oops! clear/set did opposite operation on full words.
2227 
2228 Wed Mar 27 10:59:07 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
2229 
2230         * hfs_fs_i.h:
2231         Updated struct hfs_extent for concurrent access.
2232         Also caused a slight modification to struct hfs_file.
2233 
2234         * hfs_fs.h, hfs_btree.h:
2235         Added/updated prototypes.
2236 
2237         * balloc.c:
2238         hfs_bnode_alloc() finished but still untested.
2239 
2240         * bins_del.c:
2241         Fixed up deadlock avoidance in hfs_binsert() again.
2242         Perhaps I even got it right this time.
2243 
2244         * extent.c:
2245         hfs_file_extend() now safe under concurrent operations?
2246 
2247         * file.c:
2248         hfs_getblk() now safe under concurrent operations?
2249 
2250 Tue Mar 26 23:26:35 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
2251 
2252         * btree.c:
2253         Added call to hfs_extent_trim() to fix memory leak.
2254 
2255         * extent.c:
2256         Oops, had left a "#define static" in from debugging.
2257 
2258         * bins_del.c:
2259         hfs_binsert() rewritten to avoid deadlock when extending
2260         the extents B*-tree.
2261 
2262         * btree.c:
2263         Moved hfs_btree_extend() to extent.c
2264 
2265         * inode_nat.c, inode_cap.c, inode_dbl.c:
2266         hfs_*_put_inode() rewritten to call hfs_extent_trim().
2267 
2268         * extent.c:
2269         Big rewrite for new struct hfs_extent:
2270                 Now keep linked list of extents.
2271                 Cache is now a pointer to a list element.
2272                 Now have 'end' field to aid decode_extent().
2273         New functions:
2274                 hfs_extent_trim(): frees linked list.
2275                 hfs_btree_extend(): for extending B*-trees.
2276         Improved debugging output.
2277 
2278         * balloc.c:
2279         Added hfs_bnode_add() (incomplete and uncommented).
2280 
2281         * btree.c:
2282         Moved some work from hfs_btree_extend() to hfs_bnode_add().
2283 
2284         * bfind.c:
2285         Added hfs_bfind_first() as wrapper for hfs_brec_find_first().
2286 
2287         * brec.c:
2288         Added hfs_brec_find_first() to search first leaf node.
2289 
2290         * bins_del.c:
2291         Added error returns to hfs_binsert() and binsert().
2292 
2293         * bins_del.c:
2294         Check to see that we really need ancestors before starting.
2295         Check that hfs_btree_alloc() gave us enough nodes.
2296         binsert() uses info precomputed by hfs_binsert().
2297 
2298 Mon Mar 25 11:33:53 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
2299 
2300         * bnode.c:
2301         Collected together the error returns in hfs_bnode_lock().
2302 
2303         * Makefile:
2304         Added ChangeLog to $(MISC).
2305 
2306 Wed Mar 20 19:41:45 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
2307 
2308         * super.c, hfs_fs.h, file.c, dir_dbl.c, dir_nat.c, dir.c, dir_cap.c:
2309         Removed support for kernels older than about 1.3.70
2310         Most of that support had been broken recently anyway.
2311 
2312         * super.c:
2313         Fixed so DEBUG_MEM works w/o DEBUG_ALL.
2314         Updated call to hfs_btree_init().
2315 
2316         * hfs_fs.h:
2317         Updated/added prototypes.
2318 
2319         * hfs_btree.h:
2320         HFS_BFIND_CHAIN removed.
2321         struct hfs_brec gets new 'flags' field with bits:
2322                 HFS_BREC_{FIRST,OVERFLOW,UNDERFLOW,UNINITIALIZED}
2323         Removed bitmap size constants.
2324         Changes to struct hfs_btree:
2325                 'file' and 'cache' now structs rather than pointers.
2326                 Added 'reserved' field (used during insertion).
2327                 Added pointers to size and extent in MDB.
2328 
2329         * file.c:
2330         Made hfs_getblk() public.
2331         Removed (fil->inode == NULL) special cases.
2332 
2333         * extent.c:
2334         {find,update}_ext() are no longer inline.
2335         new_extent() fails when called for the extents tree;
2336                 previously it would hanging calling hfs_binsert().
2337         extend_file():
2338                 renamed to hfs_file_extend() and made public.
2339                 fixed to work for B*-trees.
2340                 zeros-out blocks as they are allocated.
2341                 fixed bugs for (allocation block) != (physical block).
2342 
2343         * btree.c:
2344         hfs_btree_{init,free}() modified for changes to struct:
2345                 'file' and 'cache' moved back into structure
2346                 file.inode initialized to reduce special cases
2347         hfs_btree_init() gets pointer to size in MDB instead of size.
2348         Added hfs_btree_extend() (incomplete and uncommented).
2349 
2350         * bnode.c:
2351         hfs_bnode_{alloc,free}() moved to separate file.
2352         Removed 'const' from some function arguments
2353                 due to change in struct hfs_btree.
2354         hfs_bnode_lock(): added WRITE/RESRV->READ transition.
2355 
2356         * brec.c:
2357         hfs_brec_get_{root,child}() now take a 'keep_mask' argument
2358                 indicating when to keep ancestor nodes, and store
2359                 information about why ancestors were kept.
2360         HFS_BFIND_CHAIN eliminated in favor of HFS_BFIND_{INSERT,DELETE}
2361                 which are now implemented using 'keep_mask'.
2362         Added hfs_brec_relse_one() that doesn't release ancestors.
2363 
2364         * bins_del.c:
2365         Lots of rewrites to cleanup insertion.
2366         Now tries to extend tree before insertion starts.
2367         binsert() iterative rather than recursive.
2368         No point in keeping track as it is still not "stable".
2369 
2370         * balloc.c:
2371         New file: started with hfs_bnode_{free,alloc}()
2372         Added hfs_bnode_init() to initialize a newly allocated bnode.
2373         hfs_bnode_free():
2374                 Renamed hfs_bnode_bitop().
2375                 Can set or clear a specified bit.
2376                 Gets bitmap sizes from nodes directly.
2377         hfs_bnode_alloc():
2378                 Returns actual node, calling hfs_bnode_init().
2379                 Gets bitmap sizes from nodes directly.
2380 
2381         * bfind.c:
2382         Removed obsolete comment from hfs_bsucc()
2383         Removed 'const' from tree arg of hfs_bfind()
2384                 due to changes in struct hfs_btree.
2385 
2386         * Makefile:
2387         Added new file: balloc.c
2388 
2389 Sat Mar  9 22:03:53 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
2390 
2391         * Start of detailed CVS logging.
2392 
2393 Mar 09, 1996: snapshot-09Mar96 hargrove@sccm.stanford.edu (Paul H. Hargrove)
2394         NOT AN OFFICIAL RELEASE
2395         Fixed up debugging code that was broken by split of btree.c
2396         Added debugging kmalloc/kfree
2397         Fixed memory leak in hfs_bnode_relse()
2398 
2399 Mar 08, 1996: snapshot-08Mar96 hargrove@sccm.stanford.edu (Paul H. Hargrove)
2400         NOT AN OFFICIAL RELEASE
2401         now reset blocksize on device when done.
2402         hfs_binsert done (except for the full tree case).
2403         btree.c split up into manageable pieces (need to sort out hfs_btree.h)
2404 
2405 Feb 26, 1996: snapshot-26Feb96 hargrove@sccm.stanford.edu (Paul H. Hargrove)
2406         NOT AN OFFICIAL RELEASE
2407         Some writability.
2408         Bug with multiple opens of meta data fixed.
2409         Netatalk support no longer considered experimental.
2410 
2411 Virtually everything has changed, so I've lost track here.
2412 
2413 Nov 16, 1995: snapshot-16Nov95 hargrove@sccm.stanford.edu (Paul H. Hargrove)
2414         NOT AN OFFICIAL RELEASE
2415         Still more comments.
2416         btree.c back to 80 columns.  will do same to other files soon.
2417         Starting with btree.c have begun to put file contents into some
2418                 sort of standard order.
2419         Moved metadata reading to VFS open() routine and now free it in
2420                 the VFS release() routine.  Much cleaner than the old way.
2421         Unified hfs_iget by shifting scheme-dependent code into a function
2422                 pointer in the superblock.  This could/should be shifted to
2423                 a VFS read_inode() routine if that can be done cleanly.
2424         Probably lots of other changes; I've lost track.
2425 
2426 Nov 05, 1995: version 0.5.3 hargrove@sccm.stanford.edu (Paul H. Hargrove)
2427         NOT AN OFFICIAL RELEASE
2428         1.2.x compatibility removed
2429         Added lots of comments to btree.c and cleanup some code.  The result
2430                 is that the source file doubled in size while the object
2431                 file dropped in size by 20%.
2432         Added some comments to super.c and dir.c as well.
2433         Cleaned up some stuff in dir.c adding some additional error checking
2434                 and moving closer to using a unified hfs_iget by migrating
2435                 common code into lookup_parent().
2436         Changed btree.c to use a separate bnode cache per filesystem.
2437         Renamed a bunch of the bnode functions in btree.c
2438 
2439 Jun 29, 1995: version 0.5.2 hargrove@sccm.stanford.edu (Paul H. Hargrove)
2440         BUG FIX and 1.3.x-compatibility release.
2441         Will compile under 1.2.x or 1.3.x by changing one line in Makefile.
2442         Started adding magic numbers to structures for "safety".
2443         Don't strip internal symbols when linking or loading, as this made
2444                 good bug reports rather difficult.
2445         Fixed a bug that could cause the fs to lock-up after trying to open
2446                 a non-existent file.
2447         Fixed a bug that allowed files to appear truncated, when in fact it
2448                 is still not possible to truncate a file.
2449         Added more/better comments to header files.
2450         Deal with volume and b-tree bitmaps in preparation for writing.
2451         Fixed readdir() to deal properly with the case where the directory
2452                 changes while writing to user-space. (which can't yet
2453                 actually happen, until directories are writable).
2454 
2455 Jun 23, 1995: version 0.5.1 hargrove@sccm.stanford.edu (Paul H. Hargrove)
2456         BUG FIX RELEASE
2457         Removed two debugging messages that didn't belong.
2458         Fixed a typo that prevented modified inodes from being written to disk.
2459         Added a missing line which prevented rmmod'ing sometimes.
2460         Added a missing line which caused errors when modifying .finderinfo or
2461                 .resource under the CAP system.
2462         Added a notify_change() to keep mode bits sensible, and to cause
2463                 changes to an inode to affect the data fork and resource fork
2464                 of a file together.
2465 
2466 Jun 22, 1995: version 0.5 hargrove@sccm.stanford.edu (Paul H. Hargrove)
2467         Fixed a bug that was giving wrong values for i_blocks
2468         Partly writable (can only 'touch' existing files, so far)
2469         Removed case= mount option.  It will be back eventually.
2470         Can now deal with CDROMs (and hard disks?), many thanks to
2471                 Holger Schemel for this work.
2472         Latin-1 filename conversion also due to Holger Schemel.
2473         Rewritten btree operations.
2474 
2475 Feb 28, 1995: version 0.4 hargrove@sccm.stanford.edu (Paul H. Hargrove)
2476         Requires Linux >= 1.1.94: depends on changes made to asm/byteorder.h
2477         Now using string comparison code donated by ARDI (see string.c)
2478         Code reorganized to use data structures more like ARDI's.
2479         More code reorganization to abstract the btree operations.
2480         Added the fork= mount option.
2481         Added AppleDouble support.  Executor, from ARDI, can now run programs
2482                 from HFS filesystems mounted with the HFS module.
2483 
2484 Jan 28, 1995: version 0.3 hargrove@sccm.stanford.edu (Paul H. Hargrove)
2485         Major code reorganization.
2486         Known for certain to work ONLY on floppies.
2487         Started caching extents, so got faster on long file reads.
2488         Now compiles separate from kernel tree.
2489         Supports 5 filename conversion methods.
2490         Supports forks, using the method from CAP.
2491         All external symbols now start with HFS_ or hfs_
2492 
2493 Jan 12, 1995: version 0.2 hargrove@sccm.stanford.edu (Paul H. Hargrove)
2494         Should now work on all HFS volumes, but still only tested on floppies.
2495         Got smaller and faster with some code reorganization.
2496         Since Linus moved htons() and friends to an asm file, should now be
2497          truly endian-independent, but still only tested on Intel machines.
2498         Requires Linux >= 1.1.77, since Linus moved htons().
2499 
2500 Jan 05, 1995: version 0.1 hargrove@sccm.stanford.edu (Paul H. Hargrove)
2501         First release.
2502         1.44Mb floppies only
2503         no resource forks
2504         trivial name mangling only
2505         read only
2506         for Linux >= 1.1.75

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.