Linux Audio

Check our new training course

Embedded Linux Audio

Check our new training course
with Creative Commons CC-BY-SA
lecture materials

Bootlin logo

Elixir Cross Referencer

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
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 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 the 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 invloved 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 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 w/ 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