patch-2.1.78 linux/fs/hfs/ChangeLog

Next file: linux/fs/hfs/FAQ.txt
Previous file: linux/fs/hfs/COPYING
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.77/linux/fs/hfs/ChangeLog linux/fs/hfs/ChangeLog
@@ -0,0 +1,2294 @@
+Sun Dec 28 22:48:53 1997  a sun  <asun@zoology.washington.edu>
+
+	* sysdep.c, catalog.c, hfs.h
+	as a temporary workaround until catalog.c gets re-written, 
+	i flush the dcache if we need more entries. 
+	
+Fri Dec 19 15:11:21 1997  a sun  <asun@zoology.washington.edu>
+
+	* dir_dbl.c
+	statically allocate tmp_name instead of doing it dynamically.
+
+	NOTE: well, those pesky hfs_cat_put messages still aren't gone. in
+	addition, catalog.c needs to be modified to free up some entries
+	when the cache gets filled up. 
+
+Sun Dec 14 11:51:11 1997  a sun  <asun@zoology.washington.edu>
+
+	* linux/hfs_fs.h
+	moved the dentry stuff into within the #ifdef __KERNEL__ 
+	part of hfs_fs.h and cleaned up a little.
+
+Sun Dec 14 11:24:54 1997  a sun  <asun@zoology.washington.edu>
+
+	* dir.c
+	changed hfs_rename to delete all old dentries. hfs_cat_put
+	messages on umount should be a thing of the past now.
+
+Sun Dec 14 01:12:58 1997  a sun  <asun@zoology.washington.edu>
+
+	* dir.c
+	changed mark_inodes_deleted to dget/d_delete/dput the dentry
+	instead of just dropping it. the bytes available should now
+	be updated updated properly upon deletion.
+
+Wed Dec 10 00:01:25 1997  a sun  <asun@zoology.washington.edu>
+
+	* dir.c
+	changed mark_inodes_deleted to drop the dentry instead of 
+	just deleting it. 
+
+	TODO: bytes available aren't being properly updated when a
+	resource fork gets deleted.
+
+Mon Dec  8 23:22:40 1997  a sun  <asun@zoology.washington.edu>
+
+	* dir_cap.c, dir_nat.c, dir_dbl.c, dir.c
+	* hfs.h, linux/hfs_sysdep.h, linux/hfs_fs_i.h
+	Added code to drop ({dbl,cap,nat}_drop_dentry) invalid
+	dentries when creating or moving a file.
+
+	* inode.c
+	Added code to delete cached dentries when a file gets deleted.
+
+	* current yuckiness: there's an extra hfs_cat_put somewhere. it's
+	harmless but bothersome.
+	
+Thu Dec  4 00:14:03 1997  a sun  <asun@zoology.washington.edu>
+
+	* dir.c, dir_cap.c, dir_nat.c, file.c, file_hdr.c, inode.c,
+	* linux/{hfs_sysdep.h, hfs_fs.h}, version.c:
+	Completed first code dentrification sweep. It mounts! It copies!
+	It dcaches! 
+
+Mon Apr 28 06:58:44 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* version.c, INSTALL.sgml, HFS.sgml:
+	Bump version to 0.95 (Woohoo! We're beta!)
+
+	* linux/hfs_fs.h:
+	Modify HFS_SB() and HFS_I() when compiled into the kernel.
+
+	* FAQ.sgml:
+	Add a new question (and its answer):
+	Why does my Macintosh show generic application and document icons?
+
+	* HFS.sgml:
+	Add some URLs and remove the (now empty) FAQ section.
+
+Sun Apr 27 22:17:01 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* HFS.sgml:
+	Don't call the version 1 headers "slightly modified".
+
+	* file_hdr.c, dir_nat.c:
+	Comment some AFPD compatibility stuff.
+
+	* FAQ.sgml:
+	Update for version 0.95.
+
+	* BUG_INFO:
+	Remove the BIG_INFO script since we no longer mention it.
+
+	* README.sgml, INSTALL.sgml, HFS.sgml, Makefile:
+	Split README.sgml into HFS.sgml and INSTALL.sgml.
+	Stop including the document sources in snapshots.
+
+	* file_hdr.c:
+	Fix hdr_truncate() not to truncate the data fork.
+
+Wed Apr 16 23:56:25 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* FAQ.sgml:
+	Bump version to 0.8.4 and add two answers:
+		How to fsck an HFS filesystem.
+		How to generate linux/version.h.
+
+	* version.c, README.sgml:
+	Bump version to 0.8.4.
+
+	* README.sgml, FAQ.sgml, Makefile:
+	Separate the FAQ from the README.
+
+	* linux/hfs_fs.h:
+	Add (struct hfs_fork) to the forward declarations.
+
+Thu Apr 10 05:47:16 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* linux/hfs_sysdep.h:
+	Work around the non-const declaration of test_bit()'s second argument.
+
+	* Makefile:
+	Use .config from the kernel source to check for MODVERSIONS.
+
+Wed Apr  9 07:57:17 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* bnode.c:
+	Check the record table in each bnode as we read it from disk.
+
+	* super.c, mdb.c, hfs.h:
+	Deal with the ATTRIB_CLEAN bit of the MDB properly (in mdb.c).
+
+	* super.c, hfs.h, mdb.c:
+	Search for the alt-MDB rather than using the device size to find it.
+
+Wed Apr  9 03:39:05 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* version.c, README.sgml:
+	Bump version to 0.8.3.
+
+Mon Apr  7 20:09:56 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* part_tbl.c:
+	Fix to allow bootable CDROMs (which have blocksize != 512) to mount.
+
+	* super.c:
+	Check that blk_size[MAJOR(dev)] is non-NULL before dereferencing.
+
+Sat Apr  5 10:44:42 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* hfs_btree.h, binsert.c, brec.c, bfind.c, bins_del.c, bdelete.c:
+	Make btree operations less likely to do
+	nasty things if the tree is corrupted.
+
+	* part_tbl.c, README.sgml:
+	Count partitions from 0 rather than from 1.
+
+Wed Apr  2 23:26:51 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* bdelete.c:
+	Don't bother checking for oversized keys in hfs_bdelete().
+
+	* bdelete.c, bfind.c, binsert.c:
+	Verify key lengths against the maximum given for the tree.
+
+	* Makefile:
+	Check that /usr/include/linux/modversions.h exists before including it.
+	This allows compilation without CONFIG_MODVERSIONS enabled.
+
+Sat Mar 29 13:17:53 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* linux/hfs_fs.h, super.c, file_hdr.c, hfs.h, extent.c, file_cap.c,
+	  dir_dbl.c, dir_nat.c, dir.c, dir_cap.c, binsert.c, catalog.c,
+	  bfind.c:
+	Make (struct hfs_bkey) and (struct hfs_brec) more "abstract".
+
+	* binsert.c:
+	Remove redundant test in hfs_binsert().
+
+Sat Mar 29 05:24:23 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* version.c, README.sgml:
+	Fix formatting problems in README.sgml and bump version to 0.8.2.
+
+	* extent.c:
+	Fix bug that caused serious headaches with fragmented files.
+
+Fri Mar 28 00:23:18 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* version.c, README.sgml:
+	Bump version to 0.8.1.
+
+	* btree.c, balloc.c:
+	Commit map nodes to buffers when new map nodes are added.
+
+Thu Mar 27 22:41:07 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* Makefile:
+	Include linux/modversions.h from the gcc command line.
+
+	* mdb.c:
+	Was updating modified date twice in hfs_mdb_commit().
+
+	* linux/hfs_sysdep.h, linux/hfs_fs.h, linux/hfs_fs_i.h,
+	  linux/hfs_fs_sb.h, sysdep.c, trans.c, super.c, hfs_sysdep.h, inode.c,
+	  hfs_fs_i.h, hfs_fs_sb.h, hfs_fs.h, hfs.h, file_cap.c, file_hdr.c,
+	  file.c, dir_nat.c, dir_cap.c, dir_dbl.c, Makefile, dir.c:
+	Rearrange headers in preparation for inclusion in the kernel.
+
+	* hfs_fs_sb.h, hfs_fs.h:
+	Add forward declarations so other code can include these headers.
+
+	* hfs_sysdep.h:
+	Include __constant_hton[ls]() for little-endian machines.
+
+	* hfs_fs.h, hfs_sysdep.h, hfs.h:
+	Move typedefs of hfs_{byte,word,lword}_t from hfs.h to hfs_sysdep.h.
+	Include hfs_sysdep.h from hfs_fs.h.
+
+	* trans.c, super.c, part_tbl.c, string.c, inode.c, mdb.c, hfs_fs_sb.h,
+	  hfs_sysdep.h, hfs_fs.h, hfs.h, hfs_btree.h, file_cap.c, file_hdr.c,
+	  file.c, dir_nat.c, extent.c, dir_dbl.c, dir.c, dir_cap.c, catalog.c,
+	  btree.c, bnode.c, brec.c, bitmap.c, bitops.c, bins_del.c, binsert.c,
+	  bdelete.c, bfind.c, balloc.c:
+	Big type system changes in preparation for kernel inclusion:
+	'[US](8|16|32)' -> 'hfs_[us](8|16|32)' (avoids name space pollution)
+	'hfs_name_t' -> 'struct hfs_name' (allows forward declaration)
+
+	* super.c, hfs_fs.h:
+	Add init_hfs_fs() to super.c for non-module compilation.
+
+Wed Mar 26 07:53:59 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* version.c, README.sgml:
+	Bump version to 0.8.
+
+	* README.sgml:
+	Special compilation note for DEC Alpha.
+
+	* README.sgml:
+	Note status on non-Intel processors.
+
+	* hfs_fs.h:
+	Use long's for read() and write() on the Alpha.
+
+	* README.sgml:
+	Document the afpd mount option.
+
+	* inode.c:
+	Make files always writable for owner in afpd mode.
+
+Tue Mar 25 23:21:39 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* part_tbl.c:
+	Clean up the error checking code a bit.
+
+Sat Mar 22 19:43:40 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* part_tbl.c:
+	Fixed uninitialized variable in old-style partition code.
+
+	* bins_del.c, bdelete.c:
+	Fix extraneous "bad argument to shift_{left,right}" messages.
+
+	* bitops.c:
+	Note that these routines are now tested on Intel, PPC and Alpha.
+
+	* Makefile:
+	Add -fno-builtin the the CFLAGS.
+
+Fri Feb 14 10:50:14 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* hfs_sysdep.h:
+	Don't include <asm/*.h> until after <linux/types.h>.
+
+	* catalog.c:
+	Use volume create date in hashfn() rather than casting pointer to int.
+
+	* hfs.h, mdb.c:
+	Maintaing volume create, modify and backup dates in struct hfs_mdb.
+
+	* hfs_fs.h:
+	Include the header for put_user BEFORE using it!
+
+	* string.c, hfs.h:
+	Make hfs_strhash() return an unsigned int.
+
+	* trans.c, version.c, super.c, mdb.c, part_tbl.c, string.c, inode.c,
+	  hfs_sysdep.h, hfs_fs.h, hfs_fs_sb.h, hfs_btree.h, hfs.h, file_cap.c,
+	  file_hdr.c, extent.c, dir_dbl.c, dir_nat.c, dir_cap.c, dir.c,
+	  catalog.c, btree.c, bnode.c, brec.c, bitmap.c, binsert.c,
+	  bins_del.c, bdelete.c, balloc.c, README.sgml, Makefile:
+	Updated copyright notices.
+
+	* trans.c, part_tbl.c, string.c, super.c, inode.c, mdb.c, hfs_fs.h,
+	  hfs_fs_sb.h, hfs_sysdep.h, hfs_btree.h, hfs.h, file_cap.c,
+	  file_hdr.c, dir_nat.c, extent.c, dir_cap.c, dir_dbl.c, catalog.c,
+	  dir.c, brec.c, btree.c, bitmap.c, bnode.c, bdelete.c, bins_del.c,
+	  binsert.c, Makefile, TODO, balloc.c:
+	First shot at portability to the DEC Alpha and non-gcc compilers.
+	This invloved a significant overhaul of the type system.
+
+Tue Feb  4 04:26:54 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* version.c, README.sgml:
+	Bump version to "pre-0.8-4".
+
+	* dir_nat.c:
+	Allow creat() in Netatalk .AppleDouble directories.
+
+	* dir_dbl.c:
+	Make local functions static.
+
+	* dir_dbl.c:
+	Removed unnecessary 'extern' qualifiers from forward declarations.
+
+	* file_hdr.c, TODO:
+	Fixed the 30-year time warp with afpd.
+
+	* TODO, trans.c:
+	Don't mangle the name .AppleDesktop under fork=netatalk.
+
+Mon Feb  3 23:18:45 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* inode.c:
+	Make header files always writable when the afpd mount option is given.
+	Otherwise it is impossible to unlock a locked file.
+
+	* TODO, inode.c:
+	Let afpd think chmod() always succeeds, so "New Folder" works right.
+
+	* super.c:
+	The 'afpd' mount option now makes 'fork=n,names=n' the default.
+
+	* TODO:
+	List the current known afpd-compatibility problems as bugs.
+
+	* file_hdr.c:
+	Make certain date changes through header files get written to disk.
+
+Sat Feb  1 02:24:12 1997  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* mdb.c:
+	Work around for Linux rounding device sizes to 1k increments.
+
+	* README.sgml:
+	Fixed a typo: "the a".
+
+Sat Dec 28 20:41:01 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* TODO:
+	Add ioctl() interface as a "missing feature."
+
+	* dir_nat.c:
+	Finish implementing the afpd-compatibility
+	mode using the new 'afpd' mount option.
+
+	* hfs_fs_sb.h, super.c:
+	Add new 'afpd' mount option.
+
+	* file_cap.c:
+	Spelling fix.
+
+Wed Dec 11 23:16:08 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* TODO, README.sgml:
+	Optimistically document the hybrid CD problem as fixed.
+
+	* part_tbl.c:
+	Fix the partition code so at least some of the hybrid
+	CDROMs that were previously rejected are now accepted.
+
+	* hfs.h:
+	Make fs_start a 32-bit integer rather than 16-bits.
+	The 16-bit value would overflow if a partition started
+	beyond the 32M mark (e.g. the Executor 2 Beta 1 CDROM).
+
+	* extent.c:
+	Fixed a typo in an error message.
+
+Tue Dec 10 14:43:46 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* dir_nat.c:
+	Merge in the (still dormant) afpd-compatibility changes.
+
+	* inode.c:
+	Make the .AppleDouble directory writable (again).
+
+	* version.c, README.sgml:
+	Bump version up to "pre-0.8-3".
+
+	* hfs_fs.h, file_cap.c, file_hdr.c:
+	Move AFP constants to hfs_fs.h and prefix them with "HFS_".
+
+	* dir_nat.c, inode.c:
+	Back-out changes that allowed writing to the .AppleDouble directory.
+
+	* Makefile:
+	Update rules for linuxdoc-sgml v1.5.
+
+	* extent.c:
+	Fixed serious bug in decode_extent() with handling of empty extents.
+
+	* file.c:
+	Rewrote hfs_getblk().
+	It will no longer hang if hfs_extent_map() is buggy.
+	Also halves the worst-case number of calls to hfs_extent_map().
+
+	* extent.c:
+	Fixed serious bug in decode_extent() with handling of empty extents.
+
+	* hfs_fs.h:
+	Small change so the PPC (and maybe other architectures?)
+	pick up the prototypes for the user-space access functions.
+
+	* super.c, file_cap.c, file_hdr.c, hfs_fs.h, file.c:
+	Updated for new user-space memory interface.
+
+Sun Dec  8 11:49:36 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* dir_nat.c:
+	Add special code for unlink(), and rename() in the .AppleDouble
+	directory and rmdir() of the .AppleDouble directory.
+
+	* inode.c:
+	Make the .AppleDouble directory writable.
+
+	* file_hdr.c:
+	Use AFP flags in version 1 headers (for Netatalk compatibility).
+
+	* trans.c:
+	Fixed bug with long names causing kernel Oops.
+
+Mon Oct  7 06:05:01 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* hfs_fs.h, file_cap.c, file_hdr.c, hfs.h, extent.c, file.c, dir.c:
+	Fix types for various read/write/truncate computations.
+	Also allows compilation with 2.1.x kernels.
+
+Thu Sep 19 10:28:43 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* README.sgml, version.c:
+	Bump version up to "pre-0.8-2".
+
+	* TODO:
+	Reformat the To Do list introducing prioritized categories.
+
+	* file_hdr.c, file.c:
+	Move comments about mmap() for headers from file.c to file_hdr.c.
+	Also revise the reasoning for not yet having it implemented.
+
+	* dir_nat.c, dir_cap.c, dir_dbl.c:
+	Remove 'hfs_' prefix from names of some purely local functions.
+
+	* dir_dbl.c, TODO:
+	Under AppleDouble make create(), mkdir(), mknod(), unlink(), rename()
+	and rename() check against header files when arguments start with '%'.
+
+	* super.c, hfs_fs_sb.h, hfs_fs.h, dir_dbl.c, dir_nat.c, dir_cap.c,
+	  dir.c, README.sgml:
+	Fix problem that prevented creating %RootInfo or .rootinfo in all
+	directories in addition to preventing deletion from the root directory.
+
+	* TODO:
+	Remove writable header files from the To Do list.
+
+	* README.sgml:
+	Add extensive discussion of writing to HFS filesystems and
+	the format of the special files.
+
+	* file_hdr.c:
+	Generate the 'homefs' field for version 1 header files.
+
+Wed Sep 18 23:07:45 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* hfs_fs.h, file_cap.c:
+	Comment the definition of (struct hfs_cap_info).
+
+	* version.c, README.sgml:
+	Bump version up to "pre-0.8-1" and update the "How can I write?" FAQ.
+
+	* file_hdr.c:
+	Implement hdr_write() and hdr_truncate()!!
+
+	* hfs_fs_i.h, inode.c:
+	Make hdr_layout per-inode (not per-file) so hdr_truncate() will work.
+
+	* file.c, hfs.h, catalog.c, extent.c, balloc.c:
+	hfs_extent_adj() now uses fork->lsize to determine the target file size.
+
+Sun Sep 15 07:55:24 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* README.sgml, trans.c:
+	Prevent creation of files & directories with '\0' or ':' in their names.
+
+	* string.c, hfs_fs.h, hfs.h, dir_dbl.c, dir_nat.c, dir_cap.c:
+	With case=lower could have run off end of string.
+
+Tue Sep 10 12:05:47 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* inode.c:
+	Small clean up of HFS_FIL_LOCK handling.
+
+	* inode.c:
+	Fix notify_change() not to accidentally make metadata executable.
+
+	* hfs_fs.h:
+	AppleSingle files should have HFS_ITYPE_NORM.
+
+	* inode.c:
+	Return to old behavior where MdDat = i_mtime.
+
+	* dir_dbl.c:
+	Fix serious bug in hfs_dbl_readdir() that would lock-up access to a
+	directory if one tried to write to a directory they had previously read.
+
+	* file.c:
+	Fix hfs_do_write() to adjust the fork's 'lsize' if it changed.
+
+	* inode.c, file_cap.c:
+	Allow truncate() to be called even on metadata.
+	Any size changes will last only until the next iput() of the inode.
+	Truncating a header file doesn't yet truncate the resource fork.
+
+	* inode.c:
+	Allow chmod() on a directory if it doesn't actually change i_mode.
+
+	* hfs_fs.h, trans.c, super.c:
+	Rename hfs_cap2mac() to hfs_colon2mac().
+	Rename hfs_apl2mac() to hfs_prcnt2mac().
+
+	* file_hdr.c:
+	Move header construction out of hdr_read() to create hdr_build_meta().
+
+	* hfs.h:
+	Add byte-order independent conversions: U32->U16, U32->U8 and U16->U8.
+
+	* file.c, file_cap.c, hfs_fs.h:
+	Rename fix_perms() to hfs_file_fix_mode() and
+	move it from from file_cap.c to file.c.
+
+	* README.sgml, super.c:
+	Make the default for the names mount option vary with the fork option.
+
+	* file_cap.c:
+	The umask was applied incorrectly in fix_perms().
+
+Mon Sep  9 13:11:28 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* README.sgml:
+	Note that it compiles on m68k machines, but needs more testing.
+
+	* hfs_sysdep.h, Makefile:
+	Changes to compile unmodified on m68k (and possibly other machines).
+
+	* dir_cap.c:
+	hfs_cap_readdir() was mistakenly producing .rootinfo entries for
+	the .finderinfo and .resource subdirectories of the root directory.
+
+	* inode.c:
+	A directory's i_size was too small by 1 under CAP, so hfs_cap_readdir()
+	would omit the last directory entry.  i_nlink was also too large by 1.
+
+Sun Sep  8 12:56:06 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* file_hdr.c:
+	Rewrite hdr_read() to be more efficient and to deal correctly with
+	descriptors having lengths that differ from the actual size of the data.
+
+	* file_cap.c:
+	Add write support for CAP finderinfo files!!
+
+	* super.c, inode.c, hfs_fs.h, hfs_fs_i.h, hfs_fs_sb.h, file_dbl.c,
+	  file_nat.c, file_hdr.c, file.c, file_cap.c, Makefile, dir.c:
+	Generate metadata (header files and CAP finderinfo files) on-the-fly.
+	The files file_{dbl,nat}.c are merged into file_hdr.c as a result.
+
+Sat Sep  7 08:09:24 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* README.sgml:
+	Fix silly grammatical error.
+
+Fri Sep  6 09:17:12 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* hfs_fs_sb.h, super.c:
+	No need to cast type of s_reserved.
+
+	* file_dbl.c, file_nat.c, dir_dbl.c, dir_nat.c, file_cap.c, dir_cap.c:
+	Add the missing NULL readpage and writepage entries to the inode_ops.
+
+	* file_dbl.c, file_nat.c, file.c, file_cap.c:
+	Cleanup error checking for read() and write().
+
+Thu Sep  5 05:29:53 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* version.c, README.sgml:
+	Bump version up to "0.7.2".
+	User-visible changes from 0.7.0:
+	+ Corrected CAP finderinfo file format.
+	+ Support for more features of CAP finderinfo files.
+	+ No longer requires gcc 2.7.0 or newer.
+	+ Now implements mknod() system call.
+
+	* hfs_fs.h, dir_nat.c, file_cap.c, file_nat.c, README.sgml, dir_cap.c:
+	Include the CAP and Netatalk copyright notices.
+
+	* hfs_fs.h, file_cap.c:
+	Repair and improve CAP support.
+
+	* catalog.c:
+	Oops! The BkDat for new files and directories was in 1972 when
+	it should have been in 1904 (not that it matters that much).
+
+	* inode.c:
+	The HFS MdDat should be the larger of the i_mtime and i_ctime.
+
+	* README.sgml:
+	Change 'm_time' to 'i_mtime'.
+
+Wed Sep  4 13:27:35 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* version.c, README.sgml:
+	Bump version up to "0.7.1".
+	User-visible changes from 0.7.0:
+	+ Minor bug in CAP finderinfo file format fixed.
+	+ No longer requires gcc 2.7.0 or newer.
+	+ Now implements mknod() system call.
+
+	* README.sgml:
+	Removed note about needing gcc 2.7.0 or newer.
+
+	* file.c:
+	Optimize hfs_do_read() based on the fact that HFS has no holes in files.
+	Minor code formatting changes.
+
+	* hfs.h, hfs_sysdep.h, mdb.c, extent.c, file.c, btree.c, catalog.c,
+	  balloc.c, bnode.c:
+	Reorganize memory management routines.
+	hfs_malloc() and hfs_free() are the main routines.
+	The macros FREE() and MALLOC() are gone.
+	HFS_NEW() and HFS_DELETE() are new 'shorthand' macros.
+
+	* btree.c:
+	Fix broken debugging code.
+
+	* super.c, hfs.h, mdb.c, part_tbl.c, Makefile:
+	Separate partition table handling into its own file.
+
+	* dir.c:
+	Spelling fixes.
+
+	* sysdep.c:
+	Oops!  Error check got sense reversed while editing.
+
+	* mdb.c, sysdep.c, hfs.h, hfs_btree.h, hfs_sysdep.h, btree.c, extent.c,
+	  bfind.c, bnode.c, balloc.c:
+	Make hfs_buffer a pointer to a buffer_head, rather than a buffer_head.
+
+	* hfs_fs.h, dir_cap.c, dir_dbl.c, dir_nat.c, dir.c:
+	Add a mknod() entry to the inode_operations for normal directories.
+	All it is good for is letting root create regular files.
+
+	* file_dbl.c, file_nat.c, file.c, file_cap.c, dir_cap.c, dir_dbl.c,
+	  dir_nat.c:
+	Add the missing NULL entries to the end of the file_operations.
+
+	* super.c, hfs_btree.h, hfs_fs.h, mdb.c, extent.c, hfs.h, catalog.c:
+	Make the remainder of the (untested) changes
+	to allow compilation with gcc 2.6.3.
+
+	* hfs_fs.h:
+	Fix hfs_fs.h to work with gcc 2.6.3.
+
+	* hfs_fs.h:
+	(struct hfs_cap_info) should never have been 'packed'.
+
+	* BUG_INFO:
+	Use -V for getting version of module utilities.
+
+	* super.c, sysdep.c, trans.c, hfs_fs_sb.h, inode.c, hfs_fs.h,
+	  hfs_fs_i.h, file_cap.c, file_dbl.c, file_nat.c, dir_dbl.c,
+	  dir_nat.c, file.c, dir.c, dir_cap.c:
+	Fix up hfs_fs{,_i,_sb}.h in preparation for inclusion in kernel.
+
+Tue Sep  3 23:58:03 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* hfs.h:
+	Change eventual destination to linux/fs/hfs rather than include/linux.
+
+	* super.c, inode.c, mdb.c, hfs_btree.h, hfs_fs.h, hfs_sysdep.h,
+	  file_dbl.c, file_nat.c, hfs.h, dir_nat.c, extent.c, dir_dbl.c,
+	  catalog.c, dir_cap.c, brec.c, btree.c, binsert.c, bnode.c, bdelete.c,
+	  bfind.c, bins_del.c, balloc.c:
+	Replace all the swap{16,32}() stuff w/ ntohl() and friends.
+
+Fri Aug 30 09:51:23 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* version.c, README.sgml:
+	Rewrite installation instructions and bump version up to "0.7.0".
+
+	* Makefile:
+	Remove the INCDIR variable; we now rely on the
+	user to have the correct links in /usr/include.
+
+Mon Aug 26 12:25:41 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* version.c, README.sgml:
+	Reformat the documentation and bump version up to "pre-0.7-9".
+	Hopefully this will become version 0.7 in a few days.
+
+Thu Aug 22 08:00:44 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* README.sgml, version.c:
+	Bump version up to "pre-0.7-8".
+
+	* file_nat.c, file_dbl.c:
+	AppleDouble headers had resource fork size in wrong byte order.
+
+Wed Aug 21 05:22:28 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* version.c, README.sgml:
+	Bump version up to "pre-0.7-7".
+
+	* bnode.c:
+	Fixed a long-standing bug in hfs_bnode_lock().
+	This bug occasionally caused lock-up under heavy load.
+
+Tue Aug 20 09:15:10 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* README.sgml, version.c:
+	Bump version up to "pre-0.7-6".
+
+	* catalog.c:
+	Fix a deadlock problem in catalog readers/writers locking.
+
+	* bins_del.c:
+	hfs_bnode_update_key() was still corrupting the header node sometimes.
+
+	* catalog.c, dir.c:
+	Fix problem with extending the catalog B-tree hanging hfs_cat_commit().
+	Fix a race that could delete a non-empty directory.
+
+Sun Aug 18 23:16:43 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* version.c, README.sgml:
+	Bump version to "pre-0.7-5" for test release.
+
+	* dir_cap.c, README.sgml:
+	Change ".:rootinfo:" to ".rootinfo".
+
+	* hfs_fs.h, dir_cap.c, dir_dbl.c, dir_nat.c:
+	Mangle the names as first step in hfs_{cap,dbl,nat}_lookup().
+	Use the new hfs_streq() to catch mixed case matches to the special
+	files and directories in hfs_{cap,dbl,nat}_lookup().
+	Store reserved names only once.
+
+	* dir.c, hfs.h, string.c:
+	Implement hfs_streq() which tests for string equality more
+	rapidly than hfs_strcmp() by checking for equal length first,
+	and use it when checking for reserved names.
+
+	* inode.c, TODO, dir_cap.c, dir_dbl.c, README.sgml:
+	Provide the metadata for the root directory for the CAP and AppleDouble
+	schemes in the files ".:rootinfo:" and "%RootInfo", respectively.
+
+	* TODO, super.c:
+	Add (untested) support for the old Mac Plus style of partition map.
+
+	* bdelete.c, TODO:
+	Note the possibility of bdelete() to hanging on a corrupted B-tree.
+
+	* TODO:
+	Add items corresponding to some of the 'XXX' comments in the sources.
+
+	* dir_dbl.c, dir_cap.c:
+	Update comments, removing ref. to a comment that once existed in inode.c
+
+	* catalog.c:
+	Remove some redundant locking and error checks
+	that had been previously marked as questionable.
+
+Sat Aug 17 08:06:56 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* binsert.c, bfind.c, bins_del.c, balloc.c, bdelete.c:
+	Edited some comments for correctness.
+
+	* README.sgml, version.c:
+	Bump version up to "pre-0.7-4" in preparation for snapshot release.
+
+	* Makefile:
+	Have 'make dep' delete the *.o and *.s files.
+
+	* catalog.c, hfs.h, TODO, bfind.c:
+	Move looping from hfs_cat_next() into hfs_bsucc(),
+	where it can be done an entire node at a time.
+
+Fri Aug 16 05:02:59 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* TODO:
+	Add AppleShare support to the list of goals.
+
+	* trans.c, super.c, hfs_fs.h, README.sgml:
+	Add a "names=netatalk" mount option, since
+	Netatalk quotes initial periods and CAP doesn't.
+
+	* Makefile:
+	Oops! Had removed the 'include .depend' from Makefile.
+
+	* inode.c, hfs_fs.h, file_nat.c, file_dbl.c, file.c, dir_nat.c,
+	  dir_dbl.c, dir_cap.c, dir.c, README.sgml:
+	Update for 2.0.1 and newer kernels.
+
+	* Makefile:
+	Get rid of ifeq stuff and use a .tmpdepend file to make sure
+	a failed 'make depend' doesn't allow a 'make hfs.o'.
+
+Wed Aug 14 01:03:01 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* version.c, README.sgml:
+	Bump version up to "pre-0.7-3" in preparation for snapshot release.
+
+	* btree.c, extent.c, bnode.c:
+	Fix up some debugging code.
+
+Tue Aug 13 12:42:12 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* version.c, README.sgml:
+	Bump revision to "pre-0.7-2".
+
+	* super.c, sysdep.c, mdb.c, file_nat.c, inode.c, file_cap.c,
+	  file_dbl.c, file.c, extent.c, dir.c, catalog.c, btree.c, bnode.c,
+	  balloc.c:
+	Added the remaining missing function comments.
+
+	* Makefile, README.sgml:
+	Simplify the default make rule to build the dependency file AND hfs.o.
+	Change the installation instructions to reflect the change.
+
+	* hfs.h:
+	Added missing structure comments.
+
+	* bdelete.c:
+	Merge bdelete_brec() back into hfs_bdelete().
+	Add missing function comments.
+
+
+	* extent.c:
+	Insignificant code change removing an unneeded indirection.
+
+	* btree.c, hfs_btree.h, balloc.c, bnode.c:
+	Add a 'sys_mdb' field to (struct hfs_btree).
+
+	* extent.c, hfs_sysdep.h, sysdep.c, bnode.c, balloc.c, bfind.c,
+	  Makefile:
+	Move hfs_buffer_read() from hfs_sysdep.h to sysdep.c so it can use
+	the symbol HFS_SECTOR_SIZE rather than the manifest constant 512.
+	Have hfs_buffer_read() print an error message,
+	and remove redundant errors from the callers.
+
+	* hfs_sysdep.h, mdb.c, super.c, file.c, hfs.h, hfs_btree.h, catalog.c,
+	  extent.c, btree.c, balloc.c, bfind.c, bnode.c:
+	Get rid of the type hfs_device and the fields of that type,
+	using the type hfs_sysmdb and the 'sys_mdb' field in its place.
+
+	* Makefile:
+	Fix definition of HDRS variable.
+
+	* README.sgml, version.c:
+	Bump version up to "pre-0.7-1".
+
+	* Makefile:
+	Separate sources and headers into three groups:
+	B-tree code, HFS code and Linux code.
+
+	* bitmap.c, bitops.c, hfs.h, hfs_sysdep.h, balloc.c:
+	Implemented portable set of bit operations in hfs_sysdep.h
+
+	* mdb.c, hfs_sysdep.h, hfs_btree.h, extent.c, btree.c, bitmap.c,
+	  bnode.c, balloc.c:
+	Implement a portable set of buffer operations in hfs_sysdep.h
+
+	* TODO:
+	Remove note about separating header files into two parts.
+
+	* catalog.c:
+	Remove call to hfs_mdb_dirty(), since the hfs_brec_relse() does it.
+
+	* hfs.h, extent.c, file.c:
+	Move hfs_getblk() from extent.c to file.c, since that is now the
+	only file that actually uses it.
+
+	* balloc.c:
+	Replace use of hfs_getblk() in balloc.c with a local function
+	(get_new_node()) that doesn't retry, since B-trees can't shrink.
+
+	* hfs.h, hfs_btree.h, hfs_sysdep.h, mdb.c, extent.c:
+	Make hfs_buffer a typedef.
+
+	* inode.c, hfs.h, hfs_sysdep.h, dir.c:
+	Change hfs_sysentry to a typedef.
+	Rename 'sysentry' field of (struct hfs_cat_entry) to 'sys_entry'.
+
+	* super.c, mdb.c, catalog.c:
+	Rename hfs_cat_sync() to hfs_cat_commit() and call it
+	from hfs_mdb_commit() rather than from hfs_write_super().
+
+	* catalog.c, file.c:
+	Minimize the calls to hfs_mdb_dirty().   Now called when:
+	1) A buffer holding a volume bitmap block is dirtied.
+	2) A dirty B-tree node is written back to the buffers.
+	3) A dirty catalog entry is written back to the buffers.
+
+	* hfs_sysdep.h, hfs.h:
+	Make hfs_sysmdb a typedef.
+
+Sun Aug 11 08:46:10 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* hfs_sysdep.h, extent.c, hfs.h:
+	Replace hfs_mdb_{lock,unlock} with more portable
+	scheme using a wait queue in the MDB.
+
+	* hfs.h, hfs_btree.h, hfs_sysdep.h, bnode.c, catalog.c, binsert.c:
+	Make hfs_wait_queue a typedef'd pointer to a (struct wait_queue).
+	Rename hfs_wait_on() to hfs_sleep_on().
+
+	* catalog.c, hfs_sysdep.h, super.c, bfind.c, bnode.c, balloc.c:
+	Implemented hfs_dev_name() in hfs_sysdep.h
+	as a portable call to produce a device name.
+
+	* super.c, hfs.h, mdb.c:
+	Rename hfs_mdb_read() to hfs_mdb_get(), and don't take a
+	'sys_mdb' argument.  That's the callers responsibility.
+
+	* sysdep.c, Makefile:
+	Remove the pointless file sysdep.c
+
+	* README.sgml:
+	Clean up the "System Requirements" section.
+
+Sat Aug 10 22:41:24 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* sysdep.h, sysdep.c, super.c, hfs_sysdep.h, mdb.c, string.c,
+	  hfs_fs.h, hfs_fs_i.h, hfs_fs_sb.h, hfs_btree_private.h, hfs_btree.h,
+	  file_cap.c, file_dbl.c, file_nat.c, hfs.h, file.c, dir_nat.c,
+	  extent.c, dir.c, dir_cap.c, dir_dbl.c, catalog.c, bnode.c, brec.c,
+	  btree.c, binsert.c, bitmap.c, bitops.c, bfind.c, bins_del.c,
+	  Makefile, balloc.c, bdelete.c:
+	Includes the hfs.h that was missing from the previous check in.
+	MAJOR include-file cleanup:
+		hfs_btree.h merged into hfs.h
+		hfs_btree_private.h renamed hfs_btree.h
+		sysdep.h renamed hfs_sysdep.h
+	Fixed some minor portability fixes shown up by the header split.
+
+	* README.sgml:
+	Add instructions for a dealing with a missing linux/version.h
+
+	* hfs_fs.h, mdb.c, string.c, catalog.c, extent.c, btree.c, bitmap.c,
+	  bitops.c, bnode.c, brec.c, bins_del.c, binsert.c, bdelete.c, bfind.c,
+	  balloc.c:
+	Major split of hfs_fs.h into Linux-specific
+	part (hfs_fs.h) and HFS-specific part (hfs.h).
+
+	* file.c, extent.c:
+	Move hfs_getblk() from file.c to extent.c
+
+	* sysdep.h, super.c, mdb.c, hfs_fs_sb.h, hfs_fs.h, file.c, extent.c,
+	  catalog.c, bnode.c, bitmap.c:
+	Make the field 's_mdb' in (struct hfs_sb_info) a pointer to
+	the MDB, rather than the actual MDB.  This allowed the definition
+	of (struct hfs_mdb) to be moved from hfs_fs_sb.h to hfs_fs.h.
+
+	* ccache.c, hfs_fs.h, Makefile, catalog.c:
+	Merged ccache.c and catalog.c into the latter.
+	Moved definition of (struct hfs_cat_rec) into catalog.c
+
+	* extent.c:
+	Oops!  Last set of changes didn't compile but they're OK now.
+
+	* hfs_btree.h, hfs_fs.h, mdb.c, ccache.c, extent.c, btree.c:
+	Move the definition of (struct hfs_raw_extent) inside
+	extent.c and treat it as simple array of U16's elsewhere.
+
+	* hfs_fs.h, dir_dbl.c, dir_nat.c, ccache.c, catalog.c, dir_cap.c:
+	Make hfs_cat_next() return the CNID and cdrType of the entry.
+	Now catalog.c and ccache.c are the only files which
+	depend on the structure of a catalog record on disk.
+
+	* dir.c, hfs_fs.h, catalog.c:
+	Replace hfs_cat_new_{file,dir}() with hfs_cat_{create,mkdir}()
+	which are wrappers for what used to be hfs_cat_create().
+
+	* hfs_fs.h, mdb.c, super.c, Makefile:
+	Split super.c into super.c (Linux stuff) and mdb.c (MDB stuff).
+
+	* super.c, hfs_fs_sb.h:
+	Add the MDB field 'drAtrb' to (struct hfs_mdb) as the field 'attrib'.
+
+	* hfs_fs_sb.h, super.c:
+	Split hfs_read_super() into hfs_read_super() and hfs_mdb_read().
+
+	* super.c, hfs_fs_sb.h:
+	Remove the unneeded 'hs' field from (struct hfs_mdb).
+
+	* TODO:
+	Remove item about hfs_notify_change() needing to update metadata.
+
+	* inode.c, hfs_fs.h, hfs_fs_sb.h, file_cap.c, file_dbl.c, file_nat.c,
+	  file.c, dir.c:
+	Add a flags argument to hfs_{cap,dbl,nat}_buildmeta() so that
+	it only builds the parts that are currently out-of-date.
+	Call hfs_{cap,dbl,nat}_buildmeta() through hfs_update_meta()
+	in hfs_notify_change() and hfs_rename() to update the metadata.
+
+	* dir.c:
+	Make test for normal dir in update_dirs_{plus,minus}() more explicit.
+
+	* inode.c, file_cap.c, file_dbl.c, file_nat.c, dir_dbl.c, dir_nat.c,
+	  file.c, README.sgml, dir_cap.c:
+	Resolve the "meta-data" vs. "metadata" rivalry in favor of the latter.
+
+	* btree.c:
+	Simplify some debugging code.
+
+	* hfs_btree_private.h, bnode.c, btree.c, balloc.c:
+	Put the in-core copy of the header node IN the
+	B-tree structure rather than just a pointer to it.
+
+	* hfs_btree_private.h, btree.c, bnode.c:
+	Have hfs_btree_commit() call hfs_bnode_commit()
+	to commit the header and root nodes.
+
+	* hfs_fs.h, super.c, hfs_btree_private.h, btree.c, hfs_btree.h,
+	  balloc.c:
+	Change hfs_commit_mdb() to hfs_mdb_commit().
+	Make hfs_mdb_commit() call hfs_btree_commit().
+	Move code to update B-tree size and extent
+	from hfs_btree_extend() to hfs_btree_commit().
+	Make hfs_btree_extend() call hfs_mdb_commit().
+
+	* super.c:
+	Change hfs_commit_super() to hfs_commit_mdb().
+
+	* btree.c, bnode.c, bfind.c:
+	Fixed up broken debugging code and error messages.
+
+	* super.c, hfs_btree_private.h, btree.c, hfs_btree.h, bdelete.c,
+	  binsert.c, balloc.c:
+	Now use write-back caching of B-tree header fields.
+
+	* hfs_fs.h:
+	Get rid of the add{16,32}() inlines as they are no longer used.
+
+	* hfs_btree_private.h, binsert.c, btree.c, bdelete.c, bfind.c, balloc.c:
+	All the needed fields of the B-tree header are
+	now cached for reading, but not yet writing.
+
+	* TODO:
+	Remove "Implement write count" from TODO list.
+
+	* file.c, super.c, bnode.c:
+	Implement write count.
+
+	* catalog.c:
+	Fix directory entry counting in hfs_cat_move().
+
+	* balloc.c:
+	Simplify hfs_btree_extend(), since the allocation
+	request will get rounded up to the clumpsize.
+
+	* extent.c:
+	Honor clumpsize when allocating blocks to files.
+
+	* file_cap.c, file_dbl.c, file_nat.c, super.c, dir.c, file.c,
+	  ccache.c, catalog.c, balloc.c:
+	Mark 44 functions in need of commenting.
+
+	* hfs_fs_sb.h, super.c, extent.c, hfs_fs.h, ccache.c, btree.c, balloc.c:
+	Record clumpsize in allocation blocks rather than 512-byte blocks.
+
+	* sysdep.h, super.c, TODO, balloc.c, hfs_fs_sb.h:
+	Now updates the backup MDB when a B-tree grows.
+
+	* extent.c:
+	hfs_extent_free() had test against NULL backward.
+	The result is that access to a file with extents in the extents
+	B-tree would result in an infinite loop in hfs_cat_put().
+
+	* hfs_fs_sb.h, super.c, hfs_fs.h:
+	Reorganize partition map code to get size of partition
+	in preparation for dealing with the alternate MDB.
+
+Fri Aug  9 03:25:13 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* Makefile:
+	Add make rules for README.{ps,info}
+
+	* README, README.sgml, DOC, FAQ, Makefile, .cvsignore, 
+	Merge CHANGES into ChangeLog.
+	Merge DOC, FAQ and README into README.sgml.
+	Add make rules for building README.{txt,dvi}
+
+	* BUG_INFO, Makefile:
+	Added a BUG_INFO script which attempts to collect some useful
+	information which I'd like to see in every bug report I receive.
+
+	* Makefile, version.c:
+	Added version.c which contains a version string.
+
+Thu Aug  8 21:48:24 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* trans.c:
+	Fix Latin-1 -> Macintosh filename mapping to change colons to pipes.
+
+	* trans.c:
+	Fixed Mac->Latin-1 translation to behave as documented for the
+	extended 8-bit characters without corresponding Latin-1 characters.
+
+	* inode.c, super.c, file.c, hfs_fs_i.h, hfs_fs_sb.h, DOC:
+	Added a conv={binary,text,auto} mount option similar to that of the
+	msdos, hpfs and iso9660 filesystems, but applying only to data forks.
+	As compared to those filesystems, HFS has the advantage that only a
+	single CR need be converted to a NL, rather than a CR/NL sequence, so
+	it is quite safe to seek in the file.
+	Additionally the 'Type' field is far more reliable indicator of text
+	files than a file extension.
+
+	* super.c:
+	Simplified parsing of mount options.
+
+	* super.c:
+	Oops!  The part=<n> mount option was being parsed in octal!
+
+	* TODO:
+	Remove "case=lower" from the list of goals.
+
+	* super.c, hfs_fs.h, hfs_fs_sb.h, string.c, dir_dbl.c, dir_nat.c,
+	  dir_cap.c, DOC:
+	Resurrect the case={asis,lower} mount option.
+
+	* dir.c:
+	Simpler test for "normal" directory in update_dirs_{plus,minus}().
+
+	* hfs_fs_sb.h, super.c, dir.c, hfs_fs.h, catalog.c, DOC:
+	Add mount options to specify what Type and Creator will be used for
+	new files and change the default from NULLs to "????".
+
+Wed Aug  7 11:32:22 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* catalog.c:
+	In hfs_cat_next() use entry->cnid rather than the key of the initial
+	brec to identify the end of the directory.
+
+	* README:
+	Update for pre-0.7 version.
+
+	* hfs_fs.h:
+	Create versioned module if CONFIG_MODVERSIONS is set in linux/config.h
+
+	* TODO:
+	Note need for special steps for unaligned accesses on some machines.
+
+	* FAQ:
+	Added Q0: What is HFS?
+	Added Q7: Does hfs_fs work w/ 400k and 800k diskettes?
+	Brought Q6 (about writability) up to date.
+	Made a few other answers more verbose.
+
+Tue Aug  6 00:58:46 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* Makefile:
+	Changed 'snapshot' rule to include cvs tag command.
+
+	* hfs_fs.h, dir_cap.c, dir_dbl.c, dir_nat.c, catalog.c, ccache.c:
+	Implemented readers half of dir locking scheme so readdir() should
+	produce consistent results and count_dir_entries() is not race prone.
+
+	* catalog.c:
+	hfs_cat_move() was calling hfs_cat_decache() after changing
+	the key rather than before, corrupting the hash lists.
+
+Mon Aug  5 14:03:46 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* hfs_fs.h, catalog.c:
+	Implemented the writers half of a locking scheme for directories.
+
+	* inode.c:
+	Fixed a serious bug in hfs_notify_change() that would allow a chmod()
+	on directory meta-data and would cause the directory inode (if it was
+	in memory at the time) to change into a file inode.
+
+	* inode.c:
+	Fixed a problem with write permissions on directory meta-data.
+
+	* dir_dbl.c, dir_nat.c, dir_cap.c:
+	hfs_{cap,dbl,nat}_readdir() now return the correct value in the 'd_ino'
+	field of the dirent for all cases, something I think has always been
+	done incorrectly until now.
+
+	* dir_nat.c, inode.c, dir_cap.c:
+	In hfs_{cap,nat}_lookup() take advantage of the
+	'file_type' field of (struct hfs_inode_info).
+
+	* TODO:
+	Removed two accomplished goals (rename() and improved readdir()).
+
+	* inode.c, dir_dbl.c, dir_nat.c, hfs_fs_i.h, dir.c, dir_cap.c:
+	Rewrite hfs_{cap,dbl,nat}_readdir() to take advantage of hfs_cat_next().
+	They now use a uniform 'i_size' for all inodes for a given directory.
+	This simplifies update_dirs_{plus,minus}() and eliminates the need for
+	the 'file_size' and 'dir_link' fields of (struct hfs_inode_info).
+	For the CAP and Netatalk schemes the meta-data directories are now the
+	last entries rather than coming just after '.' and '..'.  This is in
+	preparation for the day when we can write to the files in those
+	directories, and ensures that when using 'tar' to copy HFS filesystems
+	the file or directory will be created before the meta-data is written.
+	Otherwise we could be stuck writing meta-data and not knowing if it is
+	for a file or a directory!
+
+	* ccache.c:
+	Updated count_dir_entries() for new hfs_cat_next().
+
+	* hfs_fs.h, catalog.c:
+	hfs_cat{nth,next}() no longer take a 'types' argument,
+	so they now return all entries.
+	hfs_cat_next() now uses the ParID of the key to detect
+	the end of the directory.
+	hfs_cat_nth() now accepts n=0 as a valid input, requesting the thread.
+
+	* trans.c, string.c, super.c, dir_nat.c, hfs_fs.h, dir.c, dir_cap.c,
+	  dir_dbl.c, catalog.c:
+	Rename (struct hfs_cname) to the more appropriate (struct hfs_pstr).
+
+	* hfs_fs.h, hfs_btree.h:
+	Move some constants from hfs_fs.h to hfs_btree.h
+
+	* bdelete.c, hfs_btree.h:
+	Remove hfs_bdelete_brec() from public B-tree interface.
+
+	* hfs_btree_private.h, hfs_fs.h, btree.c, hfs_btree.h, bnode.c, brec.c,
+	  bfind.c, bins_del.c, binsert.c, balloc.c, bdelete.c, Makefile:
+	Split B-tree stuff into public and private parts:
+		brec.c split into bfind.c and brec.c
+		hfs_btree.h split into hfs_btree.h and hfs_btree_private.c
+
+	* inode.c:
+	The tests and sets of the HFS_FIL_LOCK bit where all reversed!
+
+	* hfs_fs.h, ccache.c:
+	Redo some ccache stuff, removing the 'error' field from
+	(struct hfs_cat_entry) and ensuring that hfs_cat_put()
+	will not sleep on an uninitialized entry.
+
+Sun Aug  4 23:43:28 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* sysdep.h:
+	Change swap{16,32}() back to macros since hton[ls]() are functions.
+
+	* hfs_fs.h, ccache.c:
+	Use only lowest order byte of parent CNID in hashing a catalog key.
+
+	* bdelete.c:
+	The "improved" bdelete() was TOO paranoid looking for missing parents.
+
+	* ccache.c:
+	Get rid of pointless swap16const(0).
+
+	* hfs_fs.h, inode.c, extent.c, ccache.c, dir_cap.c, dir_nat.c,
+	  binsert.c, catalog.c:
+	Store cnid and associated constants in big-endian byte order.
+	This reduces the number of byte-order swaps required.
+
+	* sysdep.h:
+	Make swap32() and swap16() inline functions.
+
+	* dir_nat.c, dir_cap.c, dir_dbl.c:
+	Added hfs_rename() to the inode_operations for normal directories.
+
+	* dir.c, hfs_fs.h:
+	Added hfs_rename() and cleaned up hfs_{create,mkdir,unlink,rmdir}().
+
+	* catalog.c:
+	Added the missing check for moving a directory into itself.
+
+	* catalog.c, ccache.c, hfs_fs.h:
+	Implement a nearly ideal hfs_cat_move().
+	It still needs to prevent moving a directory into itself.
+	The functions hfs_cat_{create,delete,move}() still need work with
+	respect to their atomicity (especially vs. readdir).
+
+	* bdelete.c:
+	Fixed a serious bug in hfs_bdelete_brec() that would yield a corrupted
+	b-tree when the first record in a bnode was deleted.
+	Made bdelete() more aggressive when checking for missing parents.
+
+Sat Aug  3 06:11:50 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* btree.c, super.c:
+	Fixed a problem that caused a kernel oops when no HFS filesystem
+	is found.
+
+Wed Jul 24 13:06:12 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* catalog.c:
+	Remove race in hfs_cat_create() that could overflow directory valence.
+
+	* catalog.c:
+	Fix hfs_cat_create() so the parent directory doesn't get deleted
+	out from under it.  Otherwise we could have created files and
+	directories in deleted directories.
+
+	* hfs_fs.h, dir_cap.c, dir_dbl.c, dir_nat.c, catalog.c, ccache.c:
+	Redo hfs_cat_{next,nth}() in terms of which entry types to
+	allow, rather than which to skip.
+
+	* catalog.c:
+	The function hfs_cat_create() would fail to hfs_cat_put(entry) if
+	the 'record' argument was invalid or if the 'result' argument was NULL.
+
+	* dir.c:
+	The functions hfs_{create,mkdir,unlink,rmdir} all failed to
+	call iput() when their arguments conflicted with a reserved name.
+
+	* catalog.c, hfs_fs_sb.h:
+	Start over on rename().  Still unfinished.
+	Fix silly bug in hfs_cat_create() that made it always fail.
+
+	* ccache.c:
+	Fix byte-order bug in write_entry().
+
+Tue Jul 23 12:12:58 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* dir_dbl.c, dir_nat.c, hfs_fs.h, dir.c, dir_cap.c:
+	Remove the macros KEY() and PARENT() since the key is now easy
+	to access through the catalog entry.
+	Replace the macros NAME{IN,OUT}() with inline functions
+	hfs_name{in,out}() to gain type checking of arguments.
+
+	* catalog.c:
+	Remove the macro TYPE().
+
+	* inode.c, file_dbl.c, file_nat.c, file.c, file_cap.c:
+	Remove the #define's of the unused macro KEY().
+
+	* hfs_fs.h, dir_cap.c, dir_dbl.c, dir_nat.c, catalog.c, dir.c:
+	Replace hfs_lookup_parent() in dir.c with hfs_cat_parent() in catalog.c.
+	This new function performs locking to protect against rename() changing
+		the parent during I/O.
+	It is also intended for use with files as well as directories.
+	Change hfs_{cap,dbl,nat}_lookup() to use the new function.
+
+	* dir.c, hfs_fs.h, catalog.c:
+	Remerge hfs_cat_{create,mkdir}() into hfs_cat_create() and resurrect
+		hfs_cat_new_{file,dir}().
+	Fix hfs_cat_{create,delete} to use the improved catalog cache for
+		locking in place of directory-level create/delete locks.
+	Fix hfs_{create,mkdir}() to use the new hfs_cat_create().
+
+	* hfs_fs.h, ccache.c:
+	Rewrite parts to remove need for specialized create/delete locking.
+	Use new case-independent hash function.
+	Fix bug in hfs_cat_get() that would read an entry w/o locking it.
+	Call hfs_relinquish() before retrying a deleted entry in hfs_cat_get.
+	If there is a read error, then don't retry in hfs_cat_get().
+	Remove unused 'version' field from (struct hfs_cat_entry).
+
+	* sysdep.h:
+	Add hfs_relinquish(), a system-independent alias for schedule().
+
+	* hfs_fs.h, string.c:
+	Add hfs_strhash(), a simplistic case-independent hash function.
+
+	* hfs_fs.h, inode.c:
+	Make hfs_iget() an inline function.
+
+	* TODO:
+	Add a few goals and removed those that have been achieved.
+
+	* Makefile:
+	Add ccache.c to list of source files.
+	Add rule for *.s files and include them in the 'clean' rule.
+
+Wed Jul 17 17:22:45 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* sysdep.h, trans.c, string.c, super.c, hfs_fs_i.h, hfs_fs_sb.h,
+	  inode.c, hfs_btree.h, hfs_fs.h, file_dbl.c, file_nat.c, extent.c,
+	  file.c, file_cap.c, dir_dbl.c, dir_nat.c, ccache.c, dir.c,
+	  dir_cap.c, btree.c, catalog.c, bnode.c, brec.c, balloc.c:
+	Total rewrite of the inode-handling stuff to be centered around
+	a catalog entry cache (ccache.c).  This results not only in a far
+	more sensible way of doing things, but also removed many race
+	conditions. (The source and object code both got smaller too!)
+	Many small "undocumented features" were also fixed.
+	Replace HFS_CNAME with (struct hfs_cname).
+	rename() has been temporarily abandoned.
+
+Thu Jul 11 01:14:38 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* dir.c:
+	As written hfs_lookup_parent() had two overlapping read requests
+	in the catalog tree.  This could have led to deadlock.
+
+Wed Jul 10 09:27:00 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* catalog.c, hfs_fs.h, bdelete.c:
+	More work on getting rename() fleshed out.  Still not done.
+	Before I can finish it looks like I'll need to build a
+	mechanism for exclusive access to the catalog tree.  There
+	just doesn't seem to be any other way to get proper POSIX
+	semantics without a bunch of race conditions elsewhere.
+
+	* hfs_fs.h, inode.c, dir_cap.c, dir_dbl.c, dir_nat.c, catalog.c:
+	More work on the still incomplete rename() code.
+	Merge hfs_cat_add_{dir,file}() into hfs_cat_create().
+	Add file-thread support to hfs_cat_{create,delete,rename}.
+
+Tue Jul  9 09:43:15 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* inode.c, dir_dbl.c, dir_nat.c, extent.c, dir_cap.c:
+	The indirect (struct hfs_file) was causing blocks not to be freed
+	when files where deleted, and an omission in hfs_put_inode() was
+	preventing the inode from getting freed.  Both are now fixed.
+
+	* hfs_fs.h, dir_dbl.c, dir_nat.c, hfs_btree.h, catalog.c, dir_cap.c,
+	  bdelete.c:
+	Made unlink() and rmdir() more race resistant and did some more
+	work on the still incomplete code for rename().
+
+	* btree.c, bnode.c:
+	There was a serious race condition in the bnode cache, so
+	hfs_bnode_find() is now modeled after Linus's inode cache.
+
+Mon Jul  8 10:33:38 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* hfs_fs_i.h, inode.c, file_cap.c, file_dbl.c, file_nat.c, dir_dbl.c,
+	  dir_nat.c, file.c, dir.c, dir_cap.c:
+	More changes to layout of (struct hfs_inode_info).
+
+	* super.c, inode_cap.c, inode_dbl.c, inode_nat.c, inode.c, hfs_fs_i.h,
+	  hfs_fs_sb.h, file_nat.c, hfs_fs.h, file.c, file_cap.c, file_dbl.c,
+	  Makefile, catalog.c:
+	Implemented new layout for (struct hfs_inode_info) resulting in the
+	elimination of lots of duplicated code for hfs_*_write_inode(),
+	hfs_*_put_inode() and *_open() functions.
+	Merged inode_*.c files back into inode.c.
+	Not fully tested.
+
+	* TODO:
+	Add a few more of my goals to the list.
+
+	* README:
+	Documentation updates.
+
+	* inode_nat.c, inode_cap.c, inode_dbl.c, inode.c, hfs_fs.h, hfs_fs_i.h,
+	  file.c, file_cap.c, file_dbl.c, file_nat.c, catalog.c:
+	(struct hfs_file) and metadata are read when file is opened or
+	truncated and are released by iput().
+
+Sun Jul  7 23:55:43 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* inode_nat.c, inode_cap.c, inode_dbl.c, inode.c, dir_nat.c, hfs_fs.h,
+	  hfs_fs_i.h, dir_cap.c, dir_dbl.c, catalog.c, dir.c:
+	(struct hfs_dir) is now inside (struct hfs_inode_info) once again.
+
+	* inode_nat.c, super.c, inode_cap.c, inode_dbl.c, inode.c, file_nat.c,
+	  hfs_btree.h, hfs_fs.h, extent.c, file_cap.c, file_dbl.c, dir_nat.c,
+	  dir_cap.c, dir_dbl.c, btree.c, catalog.c, dir.c, bpath.c, brec.c,
+	  bins_del.c, binsert.c, bnode.c, bfind.c, balloc.c, bdelete.c,
+	  Makefile:
+	Remerged (struct hfs_bpath) and (struct hfs_brec), merging the
+	files bfind.c and bpath.c as a resurrected brec.c.
+
+Sat Jul  6 21:47:05 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* inode_cap.c, inode_dbl.c, inode_nat.c, inode.c, hfs_fs.h, hfs_fs_i.h,
+	  file_cap.c, file_dbl.c, file_nat.c, hfs_btree.h, dir_nat.c, extent.c,
+	  dir.c, dir_cap.c, dir_dbl.c, btree.c, catalog.c, bfind.c, bpath.c,
+	  binsert.c, bdelete.c:
+	Renamed (struct hfs_brec_key) to (struct hfs_bkey).
+
+Tue May 28 07:53:24 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* inode_cap.c, catalog.c:
+	Spelling fixes.
+
+	* inode_nat.c, super.c, inode_cap.c, inode_dbl.c, inode.c, hfs_fs.h,
+	  hfs_fs_i.h, hfs_fs_sb.h, file.c, file_dbl.c, file_nat.c, dir_dbl.c,
+	  dir_nat.c, extent.c, dir.c, dir_cap.c, catalog.c:
+	Structures got too big, so I had to add a layer of indirection
+	to (struct hfs_inode_info).
+	This means we must clear_inode() in inode_put().
+
+Mon May 27 01:32:42 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* catalog.c, file_cap.c:
+	Some sizeof() stuff now uses variable not type.
+
+	* hfs_fs.h:
+	Make HFS_I() and HFS_SB() inline to gain type checking.
+
+Sun May 26 13:34:17 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* dir_nat.c:
+	Oops.  Had left some debugging printk()s in place.
+
+	* file_dbl.c, file_nat.c, file_cap.c:
+	Cleaned up variable names for consistency.
+
+	* hfs_fs_sb.h:
+	Add a couple 'const's to function typedefs.
+
+	* hfs_fs.h:
+	Add and update function prototypes.
+	Cleaned up type names.
+	Fix debugging malloc code.
+	Add hfs_iget_by_name() as an inline function.
+
+	* sysdep.h:
+	Remove extra semicolon from macro definitions.
+
+	* super.c:
+	Use new hfs_iget_by_name() to get root inode.
+
+	* extent.c:
+	Cleaned up some variable naming for consistency.
+
+	* catalog.c:
+	Added (untested) code for hfs_cat_move_file().
+
+	* catalog.c:
+	Fix one missed call to hfs_cat_build_key().
+	Make hfs_cat_add_{file,dir}() take a cat_entry as an argument.
+	Add hfs_cat_new_{file,dir}() to generate new cat_entry's.
+
+	* dir_dbl.c, dir_nat.c, dir.c, dir_cap.c:
+	Cleaned up type and variable names.
+	Updated calls to hfs_cat_build_key() and NAMEOUT()
+	Use new hfs_iget_by_*() calls.
+
+	* inode_cap.c, inode_dbl.c, inode_nat.c:
+	Cleaned up type and variable names.
+
+	* inode.c:
+	Update calls to hfs_cat_build_key().
+	Cleaned up type and variable names.
+	Implemented a hierarchy of hfs_iget_by*() calls.
+
+	* catalog.c:
+	Change hfs_cat_build_key() to take a HFS_CNAME as input.
+
+	* btree.c:
+	Initialize lsize and psize fields of file.
+
+	* trans.c:
+	Now passes type HFS_CNAME and has name/len in "normal" order.
+
+Tue May 21 07:02:34 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* bnode.c:
+	Attempt to read invalid bnode would have led to an infinite loop under
+	certain circumstances.  One way to cause this was with an invalid
+	partition table which points beyond the end of the device.
+
+Sat May 11 12:38:42 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* sysdep.h, sysdep.c, inode_dbl.c, inode_nat.c, super.c, inode_cap.c,
+	  inode.c, hfs_fs.h, hfs_fs_i.h, hfs_fs_sb.h, file_dbl.c, file_nat.c,
+	  hfs_btree.h, extent.c, file.c, file_cap.c, dir_nat.c, dir.c,
+	  dir_cap.c, dir_dbl.c, btree.c, catalog.c, bitmap.c, bitops.c,
+	  bnode.c, bfind.c, bins_del.c, binsert.c, balloc.c, bdelete.c:
+	Another big wave of portability-oriented changes.
+
+Tue May  7 11:28:35 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* super.c, sysdep.c, sysdep.h, inode_cap.c, inode_dbl.c, inode_nat.c,
+	  hfs_fs_i.h, inode.c, file_nat.c, hfs_btree.h, hfs_fs.h, file.c,
+	  file_cap.c, file_dbl.c, dir_nat.c, extent.c, dir_cap.c, dir_dbl.c,
+	  btree.c, catalog.c, dir.c, bnode.c, bpath.c, binsert.c, bitmap.c,
+	  bitops.c, bdelete.c, bfind.c, bins_del.c, Makefile, balloc.c:
+	Start a big move to abstract all the Linux-specific stuff
+	out of the lower levels.  Created sysdep.[ch] to hold it.
+
+	* FAQ, TODO:
+	Bring some documentation up-to-date.
+
+Fri May  3 20:15:29 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* super.c, inode_dbl.c, inode_nat.c, inode.c, inode_cap.c, extent.c,
+	  hfs_fs.h, hfs_fs_i.h, dir_dbl.c, dir_nat.c, catalog.c, dir.c,
+	  dir_cap.c, bpath.c, btree.c, binsert.c, bnode.c:
+	"FID reform": 'fid' became 'cnid' (Catalog Node ID), and is now
+	a field in (struct hfs_file).  The new name is more consistent
+	with Apple's documentation.  The presence of 'cnid' in (struct
+	hfs_file) help move more of the code toward OS-independence.
+
+	* inode_nat.c, super.c, trans.c, inode.c, inode_cap.c, inode_dbl.c,
+	  hfs_fs.h, file_cap.c, file_dbl.c, file_nat.c, dir_nat.c, extent.c,
+	  file.c, dir.c, dir_cap.c, dir_dbl.c, btree.c, catalog.c, bnode.c,
+	  bpath.c, bins_del.c, binsert.c, bitmap.c, bitops.c, bdelete.c,
+	  bfind.c, balloc.c:
+	A lot of changes in what headers are included and in what order.
+
+Sat Apr 27 12:28:54 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* FAQ:
+	Updated for current writability status.
+
+	* .cvsignore:
+	Added ChangeLog.
+
+	* file_dbl.c, file_nat.c, file_cap.c, file.c, dir_dbl.c, dir_nat.c,
+	  dir_cap.c:
+	Added the default fsync() to all file_operations structures.
+
+	* dir_nat.c, hfs_fs.h, dir.c, dir_cap.c, dir_dbl.c:
+	Add rmdir() for normal directories.
+
+	* binsert.c:
+	I had messed up insertion so that is would sometime fail to
+	split the root, but its OK now.
+
+	* dir.c:
+	hfs_do_unlink() decremented directory counts rather than file counts.
+
+Wed Apr 24 13:20:08 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* hfs_fs.h, bnode.c, hfs_btree.h:
+	Fixed a couple more type size assumptions.
+
+	* hfs_fs.h, balloc.c, bitmap.c, bitops.c:
+	"Portable" bitmap handling was wrong for just about everything but
+	the i386 and the "inverse big-endian" bit ordering that I thought
+	the m68k port was using.  It seems the m68k port is now using standard
+	big-endian bit-numbering conventions.
+	This code is now correct for the standard big- and little-endian bit
+	orderings. (which should cover all Linux systems?)
+	Also no longer assumes sizeof(long) == 4, though that might still be
+	a problem in other parts of the code.
+
+Tue Apr 23 19:19:27 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* FAQ:
+	Bring uptodate for this snapshot.
+
+	* Makefile:
+	Add FAQ to $(MISC)
+
+	* README, TODO:
+	Documentation updates.
+
+	* bdelete.c:
+	Spelling fixes.
+
+	* dir_cap.c:
+	In unlink() don't force metadata into memory if not present.
+
+	* bdelete.c:
+	Some function comments and some clean up.
+
+	* bins_del.c:
+	Added missing function comment for hfs_bnode_update_key().
+
+	* binsert.c, bitmap.c:
+	Spelling and grammar corrections to comments.
+
+	* hfs_btree.h, hfs_fs.h, bins_del.c, binsert.c, Makefile, bdelete.c:
+	Clean up of hfs_bdelete(), splitting bins_del.c into three files:
+		bins_del.c, binsert.c and bdelete.c
+
+	* bpath.c, bins_del.c:
+	hfs_bdelete() is now working "correctly", but needs some cleaning up.
+
+Mon Apr 22 05:35:41 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* hfs_fs.h, bpath.c, hfs_btree.h, bins_del.c, bnode.c, balloc.c,
+	  bfind.c:
+	Rewrite bnode handling, heading toward a more write-behind approach.
+	Have done away with HFS_LOCK_BLIND.
+
+	* inode_dbl.c, inode_nat.c, extent.c, hfs_fs_i.h, inode_cap.c:
+	Was trying to truncate resource fork of directories!
+
+Sun Apr 21 08:15:43 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* balloc.c:
+	Updated to use truncate() to grow full trees.
+
+	* extent.c, hfs_fs.h, file.c, inode.c:
+	Added truncate() for normal files.
+
+	* bins_del.c:
+	hfs_bdelete() fixes for handling removal of root.
+
+	* inode_cap.c, inode_dbl.c, inode_nat.c:
+	Release storage for deleted files in hfs_*_put_inode().
+
+	* bitmap.c:
+	Make len=0 valid for hfs_{set,clear}_vbm_bits().
+
+	* super.c, inode.c, hfs_fs_i.h, hfs_fs_sb.h, btree.c, balloc.c:
+	Changed from clumpsize to clumpblks.
+
+	* inode_nat.c, hfs_fs.h, inode_cap.c, inode_dbl.c, btree.c, extent.c,
+	  balloc.c:
+	Some extent-related changes in preparation for truncate() support.
+
+Sat Apr 20 10:59:13 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* inode_nat.c, hfs_fs_i.h, inode.c, inode_cap.c, inode_dbl.c,
+	  dir_nat.c, hfs_fs.h, dir.c, dir_cap.c, dir_dbl.c:
+	Removed dir.valence from hfs inode.
+	Added unlink(), but still need truncate() and some more support
+	in hfs_*_put_inode() to free the disk space used by deleted files.
+
+	* bnode.c:
+	Check for NULL bnode in hfs_bnode_relse().
+
+	* bins_del.c:
+	Fixed a byte-order problem in bdelete_nonempty().
+
+	* hfs_fs.h, bnode.c, bpath.c, hfs_btree.h, balloc.c, bins_del.c:
+	First attempt at hfs_bdelete().
+
+	* dir.c:
+	The Finder would display strange things if it couldn't set frView.
+	Therefore initialize frView field for new directories.
+
+	* file_cap.c, file_dbl.c, file_nat.c, hfs_fs.h:
+	Define User/Finder info fields of catalog entry in more detail.
+
+	* hfs_fs.h:
+	HFS_BFIND_DELETE should require exact match.
+
+	* dir.c:
+	Set "record in use" bit of filFlags for new files.
+
+	* inode.c:
+	Was doing the wrong thing with i_ctime.
+
+	* dir_nat.c, dir_cap.c, dir_dbl.c:
+	Added some missing updates to the inode in hfs_*_{create,mkdir}().
+
+Sun Apr 14 00:10:52 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* hfs_fs.h, file_dbl.c, file_nat.c, file.c:
+	Work around the ever-changing type of f_reada.
+
+Sat Apr 13 00:43:41 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* bpath.c, bfind.c:
+	Spelling corrections in comments.
+
+	* bins_del.c:
+	ifdef out shift_left() until it is actually used.
+
+	* hfs_btree.h, hfs_fs.h, bins_del.c, bpath.c, bfind.c:
+	Cleaned up code related to 'flags' argument to hfs_bpath_find().
+
+Fri Apr 12 23:30:01 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* bpath.c:
+	Updated comments.
+	Rewrote hfs_bpath_init() and hfs_bpath_next().
+
+	* hfs_btree.h:
+	Updated prototype for hfs_bpath_init().
+
+	* bins_del.c:
+	Updated call to hfs_bpath_init().
+
+	* inode.c, inode_cap.c, inode_dbl.c, inode_nat.c, extent.c, file_cap.c,
+	  file_dbl.c, file_nat.c, dir_cap.c, dir_dbl.c, dir_nat.c, catalog.c,
+	  dir.c:
+	Renamed hfs_brec_relse() to hfs_brelse().
+
+	* hfs_fs.h, hfs_btree.h:
+	Updated prototypes to reflect new names in bpath.c
+
+	* bins_del.c:
+	Updated calls to functions in bpath.c
+	Updated comments.
+
+	* Makefile:
+	Renamed brec.c to bpath.c
+
+	* bfind.c:
+	Updated calls to functions in bpath.c
+	Added hfs_brelse() which was previously hfs_brec_relse() in brec.c
+
+	* bpath.c:
+	brec.c renamed to bpath.c
+	Functions renamed to reflect their current actions.
+	Comments are still out of date.
+	hfs_brec_relse() renamed to hfs_brelse() and moved to bfind.c
+
+	* brec.c:
+	brec.c renamed to bpath.c
+
+Wed Apr 10 07:20:28 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* hfs_fs.h, extent.c, hfs_btree.h, brec.c, dir.c, bfind.c,
+	  bins_del.c:
+	Backed-out changes to hfs_binsert() that added the ability to
+	return the new record, since it will probably not ever be needed.
+
+	* extent.c:
+	Since 1.3.45 truncate() has locked the file, so there is no need
+	for all the things I've been doing to hfs_file_extend() & new_extent().
+	Those two functions have been cleaned up a bit (similar to older forms).
+
+	* extent.c:
+	hfs_file_extend() now more "robust", but new_extent() is still
+	not fully "concurrency safe."
+
+Tue Apr  9 09:01:18 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* bins_del.c:
+	Made split() inline.
+
+	* inode.c, dir_nat.c, hfs_fs.h, dir_cap.c:
+	Added hfs_itry() to get in-core inodes.
+
+	* inode_dbl.c, inode_nat.c, hfs_fs.h, inode.c, inode_cap.c, file_dbl.c,
+	  file_nat.c, hfs_btree.h, extent.c, file_cap.c, dir_cap.c, dir_dbl.c,
+	  dir_nat.c, brec.c, catalog.c, dir.c, bins_del.c, bnode.c,
+	  bfind.c:
+	Rewrite of all the (struct hfs_brec) stuff.
+
+Mon Apr  8 21:50:01 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* btree.c, extent.c, bnode.c:
+	Fixed format strings in a few debugging printk()'s.
+
+	* brec.c, hfs_fs.h:
+	Removed hfs_brec_relse_one().
+
+	* hfs_fs.h, bnode.c, brec.c, hfs_btree.h, bfind.c, bins_del.c, balloc.c:
+	(struct hfs_bnode_ref)s are now returned by value rather than reference
+	and they are in (struct hfs_brec) rather than pointed to.  Cuts down on
+	a lot of kmalloc() and kfree() traffic.
+
+	* hfs_fs.h, dir.c, extent.c, bins_del.c:
+	Modified hfs_binsert() to be able to return the new record.
+
+	* bins_del.c, hfs_btree.h:
+	Added shift_left(), still untested.
+
+	* bins_del.c:
+	new_root() was missing its comment.
+
+	* super.c, trans.c, hfs_fs_i.h, inode.c, inode_dbl.c, inode_nat.c,
+	  file_nat.c, hfs_btree.h, hfs_fs.h, file.c, file_dbl.c, dir_dbl.c,
+	  dir_nat.c, extent.c, dir.c, dir_cap.c, bitops.c, bnode.c, brec.c,
+	  bfind.c, bins_del.c, bitmap.c, balloc.c:
+	Fixed lines over 80 characters and tabified files.
+
+	* bins_del.c:
+	Fixed line(s) over 80 columns.
+
+	* trans.c, inode_nat.c, string.c, super.c, inode.c, inode_cap.c,
+	  inode_dbl.c, hfs_fs_i.h, hfs_fs_sb.h, hfs_btree.h, hfs_fs.h, file.c,
+	  file_cap.c, file_dbl.c, file_nat.c, dir_dbl.c, extent.c, btree.c,
+	  dir_cap.c, bitops.c, bnode.c, brec.c, bfind.c, bins_del.c, bitmap.c,
+	  DOC, README, TODO, balloc.c, CHANGES:
+	About 150 spelling corrections.
+
+Sun Apr  7 23:14:28 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* dir_cap.c, dir_dbl.c, dir_nat.c, dir.c:
+	Cleaned-up check for special names in mkdir().
+
+	* extent.c:
+	More verbose error message.
+
+	* inode_dbl.c, inode_nat.c, hfs_fs_i.h, inode.c, inode_cap.c, dir.c,
+	  hfs_fs.h:
+	Limit directories to 32767 entries, since Mac uses 16-bit integer.
+
+Fri Apr  5 07:27:57 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* FAQ:
+	Initial version.
+
+	* dir_dbl.c, dir_nat.c, bins_del.c, dir.c, dir_cap.c:
+	Added missing function comments.
+
+Wed Apr  3 06:38:36 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* brec.c:
+	Cleaned-up code for brec->flags.
+
+	* extent.c:
+	Added function comments.
+
+	* bins_del.c:
+	Added function comments.
+	hfs_binsert() was incrementing record count even on failure.
+
+Mon Apr  1 08:35:51 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* extent.c:
+	Rewrote find_ext() and new_extent() for new hfs_btree_extend().
+	Moved hfs_btree_extend() to balloc.c
+	Fixed potential kernel OOPS in new_extent().
+
+	* brec.c:
+	Fixed potential kernel OOPS in hfs_brec_get_root().
+	Removed hfs_brec_find_first().
+	Fixed return value of hfs_brec_find().
+
+	* bins_del.c:
+	Updated call to hfs_btree_extend().
+
+	* balloc.c:
+	Merged hfs_bnode_add() and hfs_btree_extend() into the later.
+	Commented init_mapnode().
+
+	* bfind.c:
+	Removed hfs_bfind_first().
+
+	* hfs_fs.h, hfs_btree.h:
+	Updated prototypes.
+
+Sat Mar 30 22:56:47 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* CHANGES, README, TODO:
+	Updated documentation in preparation for 0.6 release.
+
+	* inode.c, hfs_fs.h:
+	Got rid of HFS_FAKE_EXEC in favor of noexec mount option.
+
+	* inode.c, super.c, DOC, hfs_fs_sb.h:
+	Added "quiet" mount option, like the fat filesystem.
+
+	* inode.c, dir_cap.c, dir_nat.c:
+	Pseudo-directories are read-only (at least for now).
+
+	* hfs_fs.h, dir_dbl.c, dir_nat.c, dir.c, dir_cap.c:
+	mkdir() updated to check against reserved names, but the
+	AppleDouble scheme still has problems with names starting with '%'.
+
+	* dir_dbl.c, dir_nat.c, hfs_fs.h, dir.c, dir_cap.c:
+	Added mkdir(). (It only took 2 tries to get it right!!)
+	Only works in "normal" directories and doesn't yet stop
+	one from creating dirs with the reserved names.
+
+	* brec.c, extent.c, bins_del.c:
+	Now have a way to get an EEXIST back from hfs_binsert().
+
+	* btree.c, inode.c, hfs_fs_i.h, file.c, bfind.c, bnode.c, balloc.c:
+	Added 'dev' field to struct hfs_file.
+
+	* hfs_fs_i.h, inode.c, btree.c, extent.c, file.c, bnode.c, brec.c,
+	  balloc.c:
+	Removed duplicated fields from struct hfs_file since
+	even B*-trees now have that information in the inode.
+
+	* extent.c:
+	zero_blocks() neglected allocation block size in computing start.
+
+Fri Mar 29 16:04:37 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* super.c:
+	hfs_statfs(): f_files and f_ffree fields are now -1, which is
+	documented as the value for "undefined" fields in struct statfs.
+
+	* trans.c, inode_nat.c, string.c, super.c, inode_dbl.c, inode_cap.c,
+	  inode.c, file_nat.c, file_dbl.c, file_cap.c, file.c, dir_dbl.c,
+	  extent.c, dir_cap.c, catalog.c, btree.c, brec.c, bnode.c, bitops.c,
+	  bitmap.c, bins_del.c, balloc.c:
+	Stylistic editing: {} for all 'for', 'while' and 'if' blocks.
+	I hope I didn't screw-up anything.
+
+	* hfs_fs.h, dir.c, dir_cap.c, dir_dbl.c, dir_nat.c:
+	Added creation of normal files to all three fork schemes!
+	Strange things may happen when trying to create "non-normal" files.
+
+	* brec.c:
+	Cleaned up some debugging code.
+
+	* hfs_fs_i.h:
+	File and directory counts could have overflown 16-bit integer.
+
+	* hfs_btree.h:
+	Added HFS_BREC_RIGHT to help fix insertion problem.
+
+	* extent.c:
+	Various fixes to hfs_{file,btree}_extend().
+
+	* catalog.c:
+	Made hfs_build_cat_key() more "correct".
+
+	* btree.c:
+	Added and fixed debugging code.
+
+	* brec.c:
+	Fixed overflow detection.
+	Added some debugging code.
+
+	* bnode.c:
+	Dirtied some buffers in places that might have been missed.
+	Fixed some debugging code that had broken.
+
+	* bitops.c:
+	hfs_count_free_bits() was running off end of bitmap.
+
+	* bins_del.c:
+	Fixed various bugs, mostly related to variable-length keys.
+
+	* balloc.c:
+	Had forgotten to set a bit in new mapnodes.
+	Node counts were overflowing 16-bit integers.
+
+	* bitmap.c:
+	Oops! clear/set did opposite operation on full words.
+
+Wed Mar 27 10:59:07 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* hfs_fs_i.h:
+	Updated struct hfs_extent for concurrent access.
+	Also caused a slight modification to struct hfs_file.
+
+	* hfs_fs.h, hfs_btree.h:
+	Added/updated prototypes.
+
+	* balloc.c:
+	hfs_bnode_alloc() finished but still untested.
+
+	* bins_del.c:
+	Fixed up deadlock avoidance in hfs_binsert() again.
+	Perhaps I even got it right this time.
+
+	* extent.c:
+	hfs_file_extend() now safe under concurrent operations?
+
+	* file.c:
+	hfs_getblk() now safe under concurrent operations?
+
+Tue Mar 26 23:26:35 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* btree.c:
+	Added call to hfs_extent_trim() to fix memory leak.
+
+	* extent.c:
+	Oops, had left a "#define static" in from debugging.
+
+	* bins_del.c:
+	hfs_binsert() rewritten to avoid deadlock when extending
+	the extents B*-tree.
+
+	* btree.c:
+	Moved hfs_btree_extend() to extent.c
+
+	* inode_nat.c, inode_cap.c, inode_dbl.c:
+	hfs_*_put_inode() rewritten to call hfs_extent_trim().
+
+	* extent.c:
+	Big rewrite for new struct hfs_extent:
+		Now keep linked list of extents.
+		Cache is now a pointer to a list element.
+		Now have 'end' field to aid decode_extent().
+	New functions:
+		hfs_extent_trim(): frees linked list.
+		hfs_btree_extend(): for extending B*-trees.
+	Improved debugging output.
+
+	* balloc.c:
+	Added hfs_bnode_add() (incomplete and uncommented).
+
+	* btree.c:
+	Moved some work from hfs_btree_extend() to hfs_bnode_add().
+
+	* bfind.c:
+	Added hfs_bfind_first() as wrapper for hfs_brec_find_first().
+
+	* brec.c:
+	Added hfs_brec_find_first() to search first leaf node.
+
+	* bins_del.c:
+	Added error returns to hfs_binsert() and binsert().
+
+	* bins_del.c:
+	Check to see that we really need ancestors before starting.
+	Check that hfs_btree_alloc() gave us enough nodes.
+	binsert() uses info precomputed by hfs_binsert().
+
+Mon Mar 25 11:33:53 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* bnode.c:
+	Collected together the error returns in hfs_bnode_lock().
+
+	* Makefile:
+	Added ChangeLog to $(MISC).
+
+Wed Mar 20 19:41:45 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* super.c, hfs_fs.h, file.c, dir_dbl.c, dir_nat.c, dir.c, dir_cap.c:
+	Removed support for kernels older than about 1.3.70
+	Most of that support had been broken recently anyway.
+
+	* super.c:
+	Fixed so DEBUG_MEM works w/o DEBUG_ALL.
+	Updated call to hfs_btree_init().
+
+	* hfs_fs.h:
+	Updated/added prototypes.
+
+	* hfs_btree.h:
+	HFS_BFIND_CHAIN removed.
+	struct hfs_brec gets new 'flags' field with bits:
+		HFS_BREC_{FIRST,OVERFLOW,UNDERFLOW,UNINITIALIZED}
+	Removed bitmap size constants.
+	Changes to struct hfs_btree:
+	        'file' and 'cache' now structs rather than pointers.
+		Added 'reserved' field (used during insertion).
+		Added pointers to size and extent in MDB.
+
+	* file.c:
+	Made hfs_getblk() public.
+	Removed (fil->inode == NULL) special cases.
+
+	* extent.c:
+	{find,update}_ext() are no longer inline.
+	new_extent() fails when called for the extents tree;
+		previously it would hanging calling hfs_binsert().
+	extend_file():
+		renamed to hfs_file_extend() and made public.
+		fixed to work for B*-trees.
+		zeros-out blocks as they are allocated.
+		fixed bugs for (allocation block) != (physical block).
+
+	* btree.c:
+	hfs_btree_{init,free}() modified for changes to struct:
+		'file' and 'cache' moved back into structure
+		file.inode initialized to reduce special cases
+	hfs_btree_init() gets pointer to size in MDB instead of size.
+	Added hfs_btree_extend() (incomplete and uncommented).
+
+	* bnode.c:
+	hfs_bnode_{alloc,free}() moved to separate file.
+	Removed 'const' from some function arguments
+		due to change in struct hfs_btree.
+	hfs_bnode_lock(): added WRITE/RESRV->READ transition.
+
+	* brec.c:
+	hfs_brec_get_{root,child}() now take a 'keep_mask' argument
+		indicating when to keep ancestor nodes, and store
+		information about why ancestors were kept.
+	HFS_BFIND_CHAIN eliminated in favor of HFS_BFIND_{INSERT,DELETE}
+		which are now implemented using 'keep_mask'.
+	Added hfs_brec_relse_one() that doesn't release ancestors.
+
+	* bins_del.c:
+	Lots of rewrites to cleanup insertion.
+	Now tries to extend tree before insertion starts.
+	binsert() iterative rather than recursive.
+	No point in keeping track as it is still not "stable".
+
+	* balloc.c:
+	New file: started with hfs_bnode_{free,alloc}()
+	Added hfs_bnode_init() to initialize a newly allocated bnode.
+	hfs_bnode_free():
+		Renamed hfs_bnode_bitop().
+		Can set or clear a specified bit.
+		Gets bitmap sizes from nodes directly.
+	hfs_bnode_alloc():
+		Returns actual node, calling hfs_bnode_init().
+		Gets bitmap sizes from nodes directly.
+
+	* bfind.c:
+	Removed obsolete comment from hfs_bsucc()
+	Removed 'const' from tree arg of hfs_bfind()
+		due to changes in struct hfs_btree.
+
+	* Makefile:
+	Added new file: balloc.c
+
+Sat Mar  9 22:03:53 1996  Paul H. Hargrove  <hargrove@sccm.stanford.edu>
+
+	* Start of detailed CVS logging.
+
+Mar 09, 1996: snapshot-09Mar96 hargrove@sccm.stanford.edu (Paul H. Hargrove)
+	NOT AN OFFICIAL RELEASE
+	Fixed up debugging code that was broken by split of btree.c
+	Added debugging kmalloc/kfree
+	Fixed memory leak in hfs_bnode_relse()
+
+Mar 08, 1996: snapshot-08Mar96 hargrove@sccm.stanford.edu (Paul H. Hargrove)
+	NOT AN OFFICIAL RELEASE
+	now reset blocksize on device when done.
+	hfs_binsert done (except for the full tree case).
+	btree.c split up into manageable pieces (need to sort out hfs_btree.h)
+
+Feb 26, 1996: snapshot-26Feb96 hargrove@sccm.stanford.edu (Paul H. Hargrove)
+	NOT AN OFFICIAL RELEASE
+	Some writability.
+	Bug with multiple opens of meta data fixed.
+	Netatalk support no longer considered experimental.
+
+Virtually everything has changed, so I've lost track here.
+
+Nov 16, 1995: snapshot-16Nov95 hargrove@sccm.stanford.edu (Paul H. Hargrove)
+	NOT AN OFFICIAL RELEASE
+	Still more comments.
+	btree.c back to 80 columns.  will do same to other files soon.
+	Starting with btree.c have begun to put file contents into some
+		sort of standard order.
+	Moved metadata reading to VFS open() routine and now free it in
+		the VFS release() routine.  Much cleaner than the old way.
+	Unified hfs_iget by shifting scheme-dependent code into a function
+		pointer in the superblock.  This could/should be shifted to
+		a VFS read_inode() routine if that can be done cleanly.
+	Probably lots of other changes; I've lost track.
+
+Nov 05, 1995: version 0.5.3 hargrove@sccm.stanford.edu (Paul H. Hargrove)
+	NOT AN OFFICIAL RELEASE
+	1.2.x compatibility removed
+	Added lots of comments to btree.c and cleanup some code.  The result
+		is that the source file doubled in size while the object
+		file dropped in size by 20%.
+	Added some comments to super.c and dir.c as well.
+	Cleaned up some stuff in dir.c adding some additional error checking
+		and moving closer to using a unified hfs_iget by migrating
+		common code into lookup_parent().
+	Changed btree.c to use a separate bnode cache per filesystem.
+	Renamed a bunch of the bnode functions in btree.c
+
+Jun 29, 1995: version 0.5.2 hargrove@sccm.stanford.edu (Paul H. Hargrove)
+	BUG FIX and 1.3.x-compatibility release.
+	Will compile under 1.2.x or 1.3.x by changing one line in Makefile.
+	Started adding magic numbers to structures for "safety".
+	Don't strip internal symbols when linking or loading, as this made
+		good bug reports rather difficult.
+	Fixed a bug that could cause the fs to lock-up after trying to open
+		a non-existent file.
+	Fixed a bug that allowed files to appear truncated, when in fact it
+		is still not possible to truncate a file.
+	Added more/better comments to header files.
+	Deal with volume and b-tree bitmaps in preparation for writing.
+	Fixed readdir() to deal properly with the case where the directory
+		changes while writing to user-space. (which can't yet
+		actually happen, until directories are writable).
+
+Jun 23, 1995: version 0.5.1 hargrove@sccm.stanford.edu (Paul H. Hargrove)
+	BUG FIX RELEASE
+	Removed two debugging messages that didn't belong.
+	Fixed a typo that prevented modified inodes from being written to disk.
+	Added a missing line which prevented rmmod'ing sometimes.
+	Added a missing line which caused errors when modifying .finderinfo or
+		.resource under the CAP system.
+	Added a notify_change() to keep mode bits sensible, and to cause
+		changes to an inode to affect the data fork and resource fork
+		of a file together.
+
+Jun 22, 1995: version 0.5 hargrove@sccm.stanford.edu (Paul H. Hargrove)
+	Fixed a bug that was giving wrong values for i_blocks
+	Partly writable (can only 'touch' existing files, so far)
+	Removed case= mount option.  It will be back eventually.
+	Can now deal with CDROMs (and hard disks?), many thanks to
+		Holger Schemel for this work.
+	Latin-1 filename conversion also due to Holger Schemel.
+	Rewritten btree operations.
+
+Feb 28, 1995: version 0.4 hargrove@sccm.stanford.edu (Paul H. Hargrove)
+	Requires Linux >= 1.1.94: depends on changes made to asm/byteorder.h
+	Now using string comparison code donated by ARDI (see string.c)
+	Code reorganized to use data structures more like ARDI's.
+	More code reorganization to abstract the btree operations.
+	Added the fork= mount option.
+	Added AppleDouble support.  Executor, from ARDI, can now run programs
+		from HFS filesystems mounted w/ the HFS module.
+
+Jan 28, 1995: version 0.3 hargrove@sccm.stanford.edu (Paul H. Hargrove)
+	Major code reorganization.
+	Known for certain to work ONLY on floppies.
+	Started caching extents, so got faster on long file reads.
+	Now compiles separate from kernel tree.
+	Supports 5 filename conversion methods.
+	Supports forks, using the method from CAP.
+	All external symbols now start with HFS_ or hfs_
+
+Jan 12, 1995: version 0.2 hargrove@sccm.stanford.edu (Paul H. Hargrove)
+	Should now work on all HFS volumes, but still only tested on floppies.
+	Got smaller and faster with some code reorganization.
+	Since Linus moved htons() and friends to an asm file, should now be
+	 truly endian-independent, but still only tested on Intel machines.
+	Requires Linux >= 1.1.77, since Linus moved htons().
+
+Jan 05, 1995: version 0.1 hargrove@sccm.stanford.edu (Paul H. Hargrove)
+	First release.
+	1.44Mb floppies only
+	no resource forks
+	trivial name mangling only
+	read only
+	for Linux >= 1.1.75

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov