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