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