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
|