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