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