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