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