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