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 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083
|
2006-11-04 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* Makefile, Makefile.kernel, NEWS: Unionfs 1.4
2006-11-04 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* .cvsignore: ignore .sioq.o.cmd and Module.symvers
2006-11-04 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* super.c (unionfs_remount_fs): Removed unused variable
2006-11-04 Yiannis Preicleous <yiannnos@gmail.com>
* super.c: allow remounting, print warning
2006-10-31 Yiannis Pericleous <yiannnos@gmail.com>
* sioq.c, lookup.c, copyup.c, inode.c: Convert sioq to anonymous unions
2006-10-30 Yiannis Pericleous <yiannnos@gmail.com>
* branchman.c: Prevent branch manipulations if imap used
2006-10-10 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* copyup.c, inode.c: More fixes related to copyup of files >= 2GB
2006-10-10 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* main.c: Sioq wasn't being properly initialized
2006-10-10 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* copyup.c: Fixed copyup of files >= 2GB
2006-09-21 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* sioq.c: One function was missing a complete and another was not
formatted properly.
2006-09-21 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* ALL: Junjiro's sioq code with some minor modifications
2006-08-25 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* super.c: Fixed compilation on 64-bit systems
2006-08-05 Junjiro Okajima <hooanon05@yahoo.co.jp>
* ALL: Copyright header update (fixed my name - added 'Jeff', added
Junjiro, super.c had 2 ezk lines) (a part of LKML-branch)
2006-07-31 David P. Quigley <dpquigl@fsl.cs.sunysb.edu>
* main.c: Fixed a printk statement.
2006-07-31 David P. Quigley <dpquigl@fsl.cs.sunysb.edu>
* main.c: Added a new mount option to specify the directory
specifier for the dirs= section of the unionfs mount command
* man/unionfs.4: Added separator documentation
2006-07-19 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* subr.c: Removed references to tasklist_lock since it will
be removed from 2.6.18 and is not needed.
2006-07-13 Erez Zadok <ezk@cs.sunysb.edu>
* INSTALL (UNIONFS_IMAP): rephrase.
2006-07-07 David P. Quigley <dpquigl@tycho.nsa.gov>
* Makefile: Cleanedup install and uninstall targets.
2006-07-03 David P. Quigley <dpquigl@tycho.nsa.gov>
* copyup.c (copyup_xattrs): removed LSM hooks in function. They
are not needed since the only time we access xattrs are with the
vfs_*xattr functions which already have the checks. In addition
replaced makeshift setxattr code with appropriate vfs_setxattr
call.
2006-06-29 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* misc/runtests.sh: Fixed inverted logic condition
* misc/runtests.sh: If build fails, provide an fallback option
2006-06-29 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* Makefile, Makefile.kernel, commonfops.c, main.c, super.c,
unionfs.h: Updated to make 2.6.18-rc happy.
2006-06-26 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* NEWS: Unionfs 1.3, copied over 1.1.5 release news
* Makefile, Makefile.kernel: Unionfs 1.3, supports 2.6.17 only
2006-06-26 Junjiro Okajima <hooanon05@yahoo.co.jp>
* main.c, super.c, unionfs.h: use '#ifdef CONFIG_EXPORTFS'
2006-06-22 Junjiro Okajima <hooanon05@yahoo.co.jp>
* persistent_inode.c: fix tiny bugs in __write_uin() and
read_uin(), use __fread() in get_lin().
* super.c: new export functions. un-tested 64 bit environment
(pointer and inode number).
2006-06-14 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* man/uniondbg.8, man/unionimap.8: newline after .IP "-foo" to
make man happy
2006-06-14 Gregory Haskins <ghaskins@novell.com>
* Makefile, utils/Makefile, rpm/unionfs.spec: Updated RPM specfile,
fixed up Makefiles
2006-06-11 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* unionfs.h: Fixed silly typo
2006-06-10 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* unionfs.h (copy_inode_size): Removed copy_inode_size because it
was (1) ugly, and (2) unnecessary; the code can easily be in the two
functions that used it
2006-06-09 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* Makefile: Up the version number
* README, NEWS: Sync with the 1.2 branch
* Makefile, Makefile.kernel, unionfs.h: Define supported version in
the Makefile; added kvers make target to display the supported
kernel version
* docs/OO-INDEX, docs/versions.txt: Document describing the new
versioning scheme
2006-06-09 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* .cvsignore: ignore cscope.out
2006-06-05 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* Makefile: fixed tarball target
2006-06-02 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* docs/00-INDEX, docs/new_locking.txt: Proposed design for new locking
mechanism (work-in-progress)
2006-06-01 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* branchman.c: Added comments
* commonfops.c: Added comments
* docs/locks.txt: Beginnings of a comprehensive file on lock placement
in unionfs
2006-06-01 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* super.c: Remove reference to split-view caches
* unionfs_debug.h: Small touch ups
2006-06-01 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* unionfs_debug.h: Finished debuging code (print entry/exit)
2006-06-01 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* misc/runtests.sh: Nicified the output of the script
2006-06-01 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* misc/runtests.sh: Little cleanup
2006-06-01 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* misc/nightly-build.sh, misc/runtests.sh: Move unionfs build to after
reboot; added code to do test builds with different EXTRACFLAGS
2006-05-31 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* docs/debug.c, docs/debug.txt: Wrong file extension
2006-05-31 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* .cvsignore: ignore vi/vim swap files
* match-dget.pl, match-iget.pl, match-malloc.pl, misc/match-dget.pl,
misc/match-iget.pl, misc/match-malloc.pl: Moved debug scripts to misc/
2006-05-31 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* INSTALL, Makefile.kernel, commonfops.c, copyup.c, dentry.c,
dirfops.c, file.c, inode.c, lookup.c, main.c, print.c, rdstate.c,
rename.c, subr.c, super.c, unionfs.h, unionfs_debug.h,
unionfs_macros.h, unlink.c, xattr.c: Simplified & cleaned up debugging
support
2006-05-31 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* .cvsignore, utils/.cvsignore: updated ignore files
2006-05-30 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* utils/Makefile: Removed some variable declarations
* Makefile: Passed variables down to lower file
2006-05-30 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* utils/: Moved all user mode programs into this directory
* usils/Makefile: New Makefile for this directory
* Makefile: Changed file to call utils/Makefile for user mode program
related operations.
2006-05-30 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* unionfs_macros.h (stohs{,_index}, ftohf{,_index}, itohi{,_index}):
make objects passed const - make GCC 4.0 happy
2006-05-30 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* man/unionctl.2: Branch deletion and file querying
2006-05-30 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* unionfs.h, unionfs_imap.h, unionfs_macros.h, unionfs_debugmacros.h:
simplified the macro files
* unlink.c, rdstate.c: minor cleanup
2006-05-30 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* mmap.c (sync_page, unionfs_sync_page): Merged the two functions,
since (1) sync_page might be confused with kernel's own sync_page,
and (2) our sync_page did not do much beside an if and a function call
2006-05-30 Junjiro Okajima <hooanon05@yahoo.co.jp>
* regression/rename-501.sh: remove obsoleted debug lines.
2006-05-30 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* man/unionctl.2: About 70% of the manpage. Still need to describe
branch deletion, and file querying.
2006-05-29 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* inode.c (inode_permission): Ignore EROFS returned by all but the
first branch
2006-05-29 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* inode.c, rename.c, subr.c, unionfs.h: Several rename fixes by
Junjiro to comply with the newly established rename semantics (see
docs/rename.txt); includes new make_dir_opaque() function
2006-05-25 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* docs/rename.txt: Enumerated thought all the possible cases of
logically/physicaly empty to logically/physicaly empty directories
2006-05-25 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* docs/rename.txt: Rename "matrix" documented
2006-05-25 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* copyup.c (copyup_named_dentry): Removed several hard-coded values
* main.c: same as above
* mmap.c (unionfs_do_readpage): same as above
* print.c (fist_print_inode, fist_print_file, __fist_print_dentry):
same as above
* unionimap.c (create_forwardmap, check_if_entry_exists,
print_forwardmap): same as above
* misc/runtests.sh: build torture tests before running them
2006-05-25 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* unionfs.h: Bail out if KERNEL_VERSION is less than 2.6.17
(EXTRAVERSION happens to be conveniently ignored)
2006-05-24 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* misc/nightly-build.sh: Make /cvs/cvsupdate after we have
successfully updated and re-exec-ed the script
2006-05-24 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* misc/nightly-build.sh: Make kernel build on 2 CPUs
2006-05-24 Junjiro Okajima <hooanon05@yahoo.co.jp>
* rename.c: add new function may_rename_dir() to check the rename src
dir is empty or not. After rename succeeds, decrement its generation
in order to force lookup at next time.
* regression/rename-501.sh: add test patterns.
2006-05-23 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* inode.c (unionfs_mkdir): __dir_opaque whiteouts' creation mode
should not be hardcoded to an octal value
* mmap.c (unionfs_sync_page): Removed leftover line of code
2006-05-22 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* regression/lookout-opaque.sh: added option to useradd so that userdelete will work
* regression/unlink-whiteout.sh: removed bin prefix from touch and
unlink
2006-05-20 Junjiro Okajima <hooanon05@yahoo.co.jp>
* rename.c: fold too long line.
* subr.c: remove unused create_whiteout_parent() which was disabled by
'#if 0 ... #endif'
* unionfs.h: remove the declaration of the unused function
2006-05-19 Junjiro Okajima <hooanon05@yahoo.co.jp>
* regression/rename-501.sh: test for Bug #501
* rename.c (do_rename, unionfs_rename_whiteout, __rename_all,
__rename_all_revert, __rename_all_clobber, unionfs_rename_all):
create the whiteout for rename_src under the old parent dir.
* subr.c (create_whiteout_parent): remove create_whiteout_parent()
temporary.
2006-05-17 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* mmap.c (unionfs_commit_write, unionfs_copy_block): Removed incorrect
comment, removed completely useless function (unionfs_copy_block)
2006-05-17 Shaya Potter <spotter@cs.columbia.edu>
* mmap.c (unionfs_commit_write): Shaya's commit_write fix
2006-05-17 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* mmap.c (sync_page, unionfs_sync_page): Compiles with
2.6.17-rc3-git18
2006-05-03 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* subr.c (superio_store): Fixed bizarre printk format
2006-04-23 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* main.c (unionfs_parse_options, parse_dirs_option): Fixed refcounting
leak (if a branch dir doesn't exist during mount, the previously
lookedup branches were not freed properly)
2006-04-17 Junjiro Okajima <hooanon05@yahoo.co.jp>
* unlink.c (unionfs_unlink_whiteout): Fixed link-unlink issue (i_nlink
going to 0)
2006-04-14 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* BUGS, man/unionfs.4: Added warning of dire consequences (Bug #256)
* README: Mention latest 2.6 kernel only
2006-04-11 Junjiro Okajima <hooanon05@yahoo.co.jp>
* file.c (__unionfs_read, unionfs_read): Fixed mtime being incorrectly
updated on access
2006-03-29 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* main.c (parse_dirs_option): On error, NULL the pointers after free
2006-03-22 Tomas Matejicek <tomas@linux-live.org>
* INSTALL: Little updates and corrections
2006-03-21 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* copyup.c, super.c, main.c, unionfs.h: removed references to
COPYUP_CURRENT_USER and copyup mount option since we only have one
copyup mode now.
2006-03-21 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* commonfops.c, dirfops.c, inode.c, main.c, stale_inode.c: Remove old
checks for kernel version - it's always going to be the latest only
2006-03-11 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* .cvsignore: Ignore generated files *.o.cmd (mmap and malloc)
2006-03-08 Junjiro Okajima <hooanon05@yahoo.co.jp>
* copyup.c (copyup_xattr): Fixed xattr "not supported" check
2006-03-07 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* misc/preprocess.pl: added UNIONFS_MMAP to list of symbols.
2006-03-07 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* file.c: forgot to put an ifndef around __do_mmap
* mmap.c: forgot to add this file to cvs
2006-03-07 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* file.c (__unionfs_read, __unionfs_write): code that was removed
by Shaya's patch which we fall back on if the person chooses not to
compile with UNIONFS_MMAP
* copyup.c, file.c, inode.c, main.c, super.c: Ifdefed around Shaya's
code and extracted some code to support not using UNIONFS_MMAP
* Makefile: added mmap.c
* INSTALL: added comment for UNIONFS_MMAP
* Note this code hasn't been fully tested yet and is considered highly
experimental.
2006-03-05 Shaya Potter <spotter@cs.columbia.edu>
* copyup.c, file.c, inode.c, main.c, super.c: Implemented true mmap
2006-03-04 Ed Swierk <eswierk@gmail.com>
* Makefile: Install the unionimap man page along with all the other
man pages
2006-03-04 Junjiro Okajima <hooanon05@yahoo.co.jp>
* inode.c (unionfs_permission): Fixed unionfs_permission on reiserfs
and xfs
2006-03-04 Junjiro Okajima <hooanon05@yahoo.co.jp>
* main.c (unionfs_interpose): Fixed bug - when the target entry is
hard-linked, the unionfs inode will be broken
2006-03-03 Bill Nottingham <notting@redhat.com>
* unionfs.h: added extern for temp vfs_listxattr function
* copyup.c: removed old style listxattr code and replaced
it with vfs_listxattr
* xattr.c: removed locks from all xattr functions since kernel
documentation says that getxattr and listxattr don't require
a lock and since vfs_setxattr and vfs_removexattr take the
mutex on the inode we get a deadlock if we lock the inode
before hand.
2006-02-21 Jan Engelhardt <jengelh@linux01.gwdg.de>
* ALL: Make unionfs work with the new mutex subsystem
2006-02-21 Junjiro Okajima <hooanon05@yahoo.co.jp>
* dirhelper.c (delete_whiteouts): Use superio_*; small cleanup
* lookup.c (is_opaque_dir): Use superio_*
* subr.c (superio_store, superio_revert): Added superio_store and
superio_revert
* unionfs.h: Added struct superio
* unlink.c (unionfs_rmdir_all): Check return value of delete_whiteouts
2006-02-20 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Makefile: Increment version number require 2.6.16.
* Makefile: Increment version number.
* INSTALL, NEWS: Add new define options.
2006-02-20 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* man/unionfs.4: removed all references to copyup mount option.
2006-02-20 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* main.c, rename.c, unionfs.h, super.c, unlink.c: Moved
DELETE_WHITEOUT to the default mode for delete and wrapped all
DELETE_ALL code in ifdefs.
* unlink.c (unionfs_unlink_whitout): Rewrote this function to use
unlink/create instead of the atomic rename operation we used before.
* misc/preprocess.pl: added entry for UNIONFS_DELETE_ALL ifdef.
2006-02-15 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* main.c (unionfs_read_super, unionfs_d_alloc_root): Created a "fake"
d_alloc_root
2006-02-15 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* unionfs_debugmacros.h: Cleanup; removed unused __FILE__, etc.
parameters from inline functions; removed unnecessary macro wrappers
* commonfops.c (unionfs_file_revalidate, unionfs_open): C99 doesn't
allow mixing of code and variable declarations
2006-02-13 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c, unionfs.h: Use simpler cpp directives.
* misc/preprocess.pl: Simple preprocessor for stripping #ifdefs and
KERNEL_VERSION defines.
2006-02-12 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* branchman.c, commonfops.c, dentry.c, lookup.c, main.c,
persistent_inode.c, super.c, unionfs.h, unionfs_debugmacros.h:
Removed inline objects from unionfs_inode_info, unionfs_dentry_info,
unionfs_sb_info, and unionfs_file_info
* unionfs_macros.h: Removed inline objects from unionfs_inode_info,
unionfs_dentry_info, unionfs_sb_info, and unionfs_file_info; Replaced
many macros by inline functions
2006-02-10 Junjiro Okajima <hooanon05@yahoo.co.jp>
* dentry.c (unionfs_d_revalidate): Merges two auto variables 'err' and
'invalid'. And also checks the return value of unionfs_lookup_backend
correctly. It solves the stale inode problem of regression/bug418.sh
* lookup.c (unionfs_partial_lookup): Same as above
2006-02-09 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionfs.h: reverted change
2006-02-09 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* super.c (unionfs_show_options): removed reference to mounter.
* unionfs.h: removed reference to mounter.
2006-02-08 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* dirhelper.c (delete_whiteouts): Use WHLEN instead of 4
* persisten_inode.c (__fread, __fwrite): Make sparse happy
* unionfs.h, unionfs_debugmarcros.h (__dtopd): Misc cleanups
2006-02-08 Konstantin Olchanski <olchansk@triumf.ca>
* inode.c (inode_permission): nameidata can be null, add checks for it
2006-02-08 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* copyup.c (copyup_permissions): Removed code referencing the
copyup=mounter option.
* main.c (unionfs_parse_options): same as above
* unionfs.h (unionfs_sb_info): same as above.
2006-02-07 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* INSTALL: Added fistdev.mk description for UNIONFS_IMAP.
2006-02-07 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* copyup.c (copyup_named_dentry,create_parent_named): ifdefed
persistent inode code.
* dirfops.c (unionfs_filldir): Same as first.
* main.c (unionfs_parse_options): Same as first.
* persistent_inode.c: ifdefed out entire file.
* super.c (unionfs_put_super): Same as two lines up.
* unionfs.h: ifdefed persistent inode variables from unionfs_sb_info
and the externed functions.
2006-02-05 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* copyup.c (copyup_named_dentry): Any error, not only ENOSPC/EDQUOT,
should unlink the partial copyup
* ChangeLog: Clarified the meaning of a changelog entry
2006-02-05 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* main.c (parse_dirs_option): Added a check for people attempting to
make the left most branch read-only
2006-02-05 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* copyup.c (copyup_named_dentry): If the copyup failed because of
quota or lack of disk space, unlink the partial copyup
* rename.c (unionfs_rename_all, unionfs_rename_whiteout): Fixed rename
which was copying up to all rw branches to the left of the source
2006-02-05 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionimap.c: we shouldn't be using such a complex open
statement when the creat function is exactly what we are doing
with open
2006-02-05 Junjiro Okajima <hooanon05@yahoo.co.jp>
* dirfops.c (unionfs_filldir): With current get_uin() is hard to
distinguish the error from success. Writing persistent ino files
may meet the file size limit. Now, users should be careful about
filesystem quota.
* main.c (unionfs_interpose): See above
* persistent_inode.c (__fread, __fwrite, parse_imap_option, __get_uid,
__read_uin, __write_uin, get_uin, read_uin): See above
* unionfs.h: See above
2006-02-05 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionimap.c: Modified open statements to create the files
with u+wr instead of u+wrx
2006-02-04 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* README: Remove reference to 2.4 as we don't support it anymore
2006-02-04 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* debug_malloc.c: Moved all malloc debugging functions to this file.
* Makefile: added debug_malloc.o to object list.
* persistent_inode.c (remove_map): removed a decrement that wasent
needed.
2006-02-04 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* inode.c (unionfs_create): Fixed uid/gid/mode not being reset when
file is created by renaming a whiteout
2006-02-02 Junjiro Okajima <hooanon05@yahoo.co.jp>
* inode.c (unionfs_create): Fixed minor bug regarding stale atime and
mtime
2006-02-01 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionfs.h: Removed usi_fsnum_table since its not used and makes
no sense to have.
* persistent_inode.c: Removed usi_fsnum_table code. Added remove_map
* unionimap.c: Fixed code that prints forward maps since it was always
printing 0 for the inode number.
2006-01-31 Junjiro Okajima <hooanon05@yahoo.co.jp>
* dentry.c (unionfs_d_revalidate): Get the hidden inode, not the
hidden dentry's inode; fixes "pseudo hardlink" via persistent inode
2006-01-25 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* Makefile, Makefile.kernel: Incremented version
* NEWS, Makefile, Makefile.kernel: Version 1.1.2
2006-01-25 Amnon Aaronsohn <bla@cs.huji.ac.il>
* patch-kernel.sh: Fixed patch-kernel.sh error msg
2006-01-24 Junjiro Okajima <hooanon05@yahoo.co.jp>
* subr.c (create_whiteout_parent): Hidden inode is not iput() since
ibstart and ibend is not updated.
2006-01-22 Junjiro Okajima <hooanon05@yahoo.co.jp>
* copyup.c (copyup_named_dentry, create_parents_named): Fixed
persistant inode code: link, rmdir, shrinking of dcache, map validation
* main.c (copyup_xattrs): Fixed persistant inode code: link, rmdir,
shrinking of dcache, map validation
* persistent_inode.c (__fread, __fread, verify_forwardmap,
verify_reversemap, init_imap_data, parse_imap_option, __get_uin,
__write_uin, get_uin, write_uin): Fixed persistant inode code: link,
rmdir, shrinking of dcache, map validation
* unionfs.h: Fixed persistant inode code: link, rmdir, shrinking of
dcache, map validation
2006-01-20 Martin Kreiner <m.kreiner@levigo.de>
* BUGS, INSTALL, man/unionctl.8, man/unionfs.4: Documentation update
* branchman.c (unionfs_ioctl_addbranch, unionfs_ioctl_rdwrbranch):
Per branch nfsro option
* inode.c (inode_permission): Per branch nfsro option
* main.c (parse_dirs_option, unionfs_parse_options): Per branch nfsro
option
* super.c (unionfs_show_options): Per branch nfsro option
* unionctl.c (__usage, parse_rw, parse_options, dump_branches, main):
Per branch nfsro option
* unionfs.h: Per branch nfsro option
2006-01-20 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* branchman.c (unionfs_ioctl_addbranch, unionfs_ioctl_delbranch):
Inode refcount debugging tool calls
* copyup.c (create_parents_named):Inode refcount debugging tool calls
* dentry.c (unionfs_d_revalidate, unionfs_d_iput):Inode refcount
debugging tool calls
* inode.c (unionfs_link): Inode refcount debugging tool calls
* main.c (unionfs_interpose, unionfs_reinterpose, unionfs_igrab,
unionfs_iput, unionfs_iget): Inode refcount debugging helper code;
Fixed init of atomic_t
* subr.c (create_whiteout_parent, unionfs_refresh_hidden_dentry):
Inode refcount debugging tool calls
* super.c (unionfs_clear_inode): Inode refcount debugging tool calls
* unionfs.h: Definitions for IGET, IGRAB, and IPUT
* match-iget.pl: Inode refcount debugging code output "matcher"
2006-01-17 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* main.c, unionfs.h: Added #if'd kzalloc for kernels older than 2.6.14
2006-01-14 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* branchman.c: Replaced pairs of KMALLOC and memset calls to
KZALLOC calls.
* commonfops.c: Replaced pairs of KMALLOC and memset calls to
KZALLOC calls.
* copyup.c: Replaced pairs of KMALLOC and memset calls to
KZALLOC calls.
* main.c: Replaced pairs of KMALLOC and memset calls to
KZALLOC calls.
* persistent_inode.c: Replaced pairs of KMALLOC and memset calls to
KZALLOC calls.
* super.c: Replaced pairs of KMALLOC and memset calls to
KZALLOC calls.
2006-01-14 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* unionfs.h: Fixed unionfs_kmalloc prototype
* main.c (unionfs_kzalloc, unionfs_kmalloc): Use kzalloc, not
the non-existent kzmalloc
2006-01-14 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* AUTHORS: added entry for Peeka J. Enberg
2006-01-14 Peeka J. Enberg <penberg@cs.helsinki.fi>
* ALL: Changed all use of GFP_UNIONFS to GFP_KERNEL
* unionfs.h: Removed definition for GFP_UNIONFS
2006-01-14 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionfs.h : Included defines for KZMALLOC and extern for
unionfs_kzalloc. NOTE: This change makes the minimum kernel
version for unionfs 2.6.14.
* main.c (unionfs_kmalloc): Changed prototype to use the
actual type of GFP_KERNEL instead of int and removed a
(void *) since the kernel coding conventions say that this
is not necessary.
* main.c (unionfs_kzalloc): New wrapper function to track
kzallocs when debugging.
2006-01-13 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* BUGS, INSTALL: Removed all references to NFS_SECURITY_HOLE
2006-01-13 Martin Kreiner <m.kreiner@levigo.de>
* inode.c (inode_permission): Introduce nfsperms mount option and
remove NFS_SECURITY_HOLE
* main.c (unionfs_dentry_info): Introduce nfsperms mount option and
remove NFS_SECURITY_HOLE
* super.c (unionfs_show_options): Introduce nfsperms mount option and
remove NFS_SECURITY_HOLE
* unionfs.h:Introduce nfsperms mount option and
remove NFS_SECURITY_HOLE
2006-01-12 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* fist.h: Code moved to unionfs.h, unionfs_macros.h, and
unionfs_debugmacros.h
* ALL, misc/*.c: Removed all references to fist.h
2006-01-09 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* rename.c (__rename_all{,_unlink,_revert,_clobber}): Make functions
static
2006-01-08 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* rename.c (unionfs_rename_all,lookup_whiteout): Split up the
nearly 300 line unionfs_rename_all function into several more
understandable "double underscore" functions; removed get_whname
it used __getname which allocates a whole page, updated
lookup_whiteout to use alloc_whname instead
* lookup.c (unionfs_lookup_backend): Use this should be the last
alloc_whname patch
2006-01-07 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* file.c: Use unlocked_ioctl iff the kernel is 2.6.11 or newer
(unionfs_main_fops)
* dirfops.c: Use unlocked_ioctl iff the kernel is 2.6.11 or newer
(for unonfs_dir_fops)
* commonfops.c (unionfs_ioctl): Use unlocked_ioctl iff the kernel
is 2.6.11 or newer, the prototype for unionfs_ioctl is also different
on 2.6.11 or newer
* inode.c (inode_permission): If kernel is older than 2.6.10, use
vfs_permission otherwise generic_permission
2006-01-03 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* ChangeLog : fixed two gramatical errors in the changelog.
2006-01-03 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionfs.h: Added a define for the first valid inode number so we
aren't using magic numbers in the persistent inode code.
* super.c: added a call to cleanup_imap_data to properly free
resources on unmount.
* persistent_inode.c: (imap_parse_options): cleanedup code,
(init_imap_data): new function (cleanup_imap_data): new
function.
* unionimap.c : cleaned up some brackets from single line if
statements.
2006-01-03 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* unionfs.h: Renamed make_whname to alloc_whname, use strlcat instead
of strncat (the strcpy is safe since WHPFX will always be NULL
terminated), the NULL termination is dony by strlcat
* inode.c (unionfs_create, unionfs_link, unionfs_symlink,
unionfs_mkdir, unionfs_mknod): Renamed make_whname to alloc_whname
* rename.c (do_rename): Renamed make_whname to alloc_whname
* subr.c (create_whiteout, create_whiteout_parent): Renamed
make_whname to alloc_whname
* unlink.c (unionfs_unlink_whiteout): Renamed make_whname to
alloc_whname
2006-01-03 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* branchman.c (unionfs_ioctl_branchcount, unionfs_ioctl_addbranch,
unionfs_ioctl_rdwrbranch, unionfs_ioctl_queryfile): Make sparse happy
* commonfops.c (unionfs_ioctl): Make sparse happy
* copyup.c (copyup_named_dentry): Make sparse happy
* file.c (unionfs_read, unionfs_write): Make sparse happy
* inode.c (unionfs_readlink, unionfs_follow_link): Make sparse happy
* main.c (unionfs_read_super): Make sparse happy
* persistent_inode.c (verify_forwardmap, verify_reversemap, get_uin,
get_lin): Make sparse happy
2006-01-02 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* unionfs.h: added make_whname to replace scattered and duplicate
code that allocates memory, copies into it WHPFX and the rest of
the filename
* inode.c (unionfs_create, unionfs_link, unionfs_symlink,
unionfs_mkdir, unionfs_mknod): Use make_whname instead of manually
allocating, and copying data
* rename.c (do_rename): Use make_whname instead of manually
allocating, and copying data
* subr.c (create_whiteout, create_whiteout_parent): Use make_whname
instead of manually allocating, and copying data
* unlink.c (unionfs_unlink_whiteout): Use make_whname instead of
manually allocating, and copying data
2006-01-02 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* ALL: Copyright year updated
* man/*: Date updated
* misc/split-views-2.4.26.patch: removed because 2.4 is not supported
2006-01-01 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* rename.c (do_rename): use WHLEN+1 instead of 5
2005-12-30 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* rename.c (do_rename): Added two missing DPUT()s
* subr.c (create_whiteout_parent): use LOOKUP_ONE_LEN instead of
lookup_one_len
2005-12-29 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* commonfops.c, copyup.c, main.c, print.c, super.c: converted FISTBUG
commands to printk and BUG pairs.
* fist.h: removed definition for FISTBUG
2005-12-29 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* lookup.c (unionfs_lookup_backend): Use WHLEN+1 instead of 5
* unionfs_debugmacros.h (__ftohf_index, __set_ftohf_index, __set_itohi_index,
__set_dbend, __set_dbstart, __set_dbopaque, __dtohd_index): BUG_ON with a more
complex condition is more optimal than "if(partial_condition) BUG_ON(...);"
2005-12-29 Junjiro Okajima <hooanon05@yahoo.co.jp>
* lookup.c (unionfs_lookup_backend): DPUT() when done with the dentry
not before, added missing DPUT()
2005-12-28 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* AUTHORS: Some maintenance dates.
2005-12-28 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* AUTHORS: updated to reflect the patches commited in the last two days
2005-12-28 Junjiro Okajima <hooanon05@yahoo.co.jp>
* lookup.c (unionfs_lookup_backend): Fixed missing DPUT()s
2005-12-28 Junjiro Okajima <hooanon05@yahoo.co.jp>
* lookup.c: change the process's privilege temporally when
creating/searching/deleting the whiteouts (in is_opaque_dir,) and
forgot DPUT() after failing is_opaque_dir() (in unionfs_lookup_backend)
2005-12-27 Junjiro Okajima <hooanon05@yahoo.co.jp>
* subr.c (create_whiteout): create whiteout bug, forgotten dput()
2005-12-27 Junjiro Okajima <hooanon05@yahoo.co.jp>
* unlink.c (unionfs_unlink_whiteout): unlink bug, forgotten dput()s
2005-12-27 Junjiro Okajima <hooanon05@yahoo.co.jp>
* inode.c (unionfs_create): create bug, forgotten dput(), extra GET_PARENT
2005-12-27 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* lookup.c (new_dentry_private_data): Use GFP_ATOMIC instead
of GFP_UNIONFS (which currently is same as GFP_KERNEL) to prevent
sleeping while atomic bug
2005-12-27 Junjiro Okajima <hooanon05@yahoo.co.jp>
* inode.c (unionfs_permission): permission bug, creat/open truncates
the running executable
2005-12-27 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionctl.c : Fixed check to see if a branch was already in the union and
fixed --before and --after logic.
* regression/branchman.sh: BUG370 will not work anymore due to code to avoid
duplicate branches being added. Need to reevaluate if it should be kept
anymore.
2005-12-27 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* *.[ch]: Went through every file and replaced ASSERT and ASSERT2 with
BUG_ON calls. The logic for BUG_ON is the opposite of ASSERT but I believe
they are all converted properly.
* fist.h: Removed definitions for ASSERT and ASSERT2
2005-12-27 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* *.[ch]: Went through every file and removed PASSERT and PASSERT2
statments. If there was an if that inclosed it then that was removed
also.
* fist.h: Removed definitions for PASSERT and PASSERT2.
2005-12-27 Junjiro Okajima <hooanon05@yahoo.co.jp>
* copyup.c (copyup_permissions): Properly copyup atime, mtime, and
ctime.
2005-12-27 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* inode.c (unionfs_lookup): Bugfix for bug #451 is not valid,
change reverted
2005-12-20 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* lookup.c (new_dentry_private_data): Use SLAB_ATOMIC instead
of SLAB_KERNEL (prevent sleeping while atomic bug)
2005-11-30 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* main.c: Updated module info (now includes unionfs version
number)
2005-11-29 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* branchman.c: Added check for addition of branches with
overlapping paths. Fixes rest of Bug #374.
2005-11-29 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* unionctl.c: Fixed branch addition with just branch (and
neither mode nor before/after specified.
2005-11-29 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Fix Coverity flagged errors.
2005-11-29 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* main.c : Corrected a boundary case, so that one cannot
use "/" as a branch if /ro is a branch.
2005-11-28 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* main.c : Ensure that the branches getting added during a
mount operation do not have overlapping branch paths. This
is part of Bug #374.
2005-11-28 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* inode.c: unionfs_lookup was not incrementing the reference
count of the dentry. this was causing the chmod bug. added
this, and fixed bug #451
2005-11-26 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* unlink.c: Updated unionfs_unlink_whiteout to fix bug #434
2005-11-24 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* print.c: Remove unused function.
* Makefile: Don't duplicate source list.
2005-11-23 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* unionimap.c: Fix unchecked malloc.
* usercommon.c: Fix double free.
2005-11-20 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* global : Changes made for "sparse"
2005-11-18 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* rename.c (get_whname): Make constant's type clearer
2005-11-18 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* unionctl.c : Changes made for "sparse"
2005-11-18 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* rename.c (get_whname): Add NULL termination.
2005-11-18 Shaya Potter <spotter@cs.columbia.edu>
* rename.c (lookup_whiteout): Add NULL Check.
2005-11-18 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Remove UNIONFS_XATTR define, because 2.6 has consistent prototypes.
2005-11-16 Martin Walter <mawa@uni-freiburg.de>
* inode.c: Fix IS_NFS.
2005-11-15 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* main.c: Allow debug= to be passed to the Unionfs module.
2005-11-11 Allessio Curri <alessio.curri@elettra.trieste.it>
* rpm/unionfs.spec: Update RPM spec file to include unionimap.
2005-11-09 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* commonfops.c (unionfs_open): Slightly rework reader/writer locks.
2005-10-24 Shaya Potter <spotter@cs.columbia.edu>
* Fix scope of readers/writer locks on branch configuration.
2005-11-09 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* unlink.c: Add comment w/ Junjiro's rmdir fix.
2005-09-26 Junjiro Okajima <hooanon05@yahoo.co.jp>
* dentry.c (unionfs_d_revalidate): Don't copy attributes to nonexistent
inodes.
* lookup.c (new_dentry_private_data): Fix a race b/t lookup and d_free.
2005-11-08 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Makefile: use /lib/modules/`uname -r`/kernel/fs/unionfs/unionfs.ko
to be consistent with other file systems.
* patch-kernel.sh: Add more double-patching checks.
* Use WHPFX and WHLEN instead of ".wh." and 4.
* dirhelper.c (delete_whiteouts): Remove useless partial lookup.
* unlink (unionfs_rmdir_all): Remove useless partial lookup.
* subr.c (create_whiteout): Silently succeed if the whiteout already
exists.
* inode.c (unionfs_unlink_all): Fix some coding style.
2005-11-07 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionctl.c (parse_options): Added a check in to see if a branch
already exists in the union and if it does the operation fails.
2005-11-07 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* dentry.c (dentry_revalidate): Remove extra d_deleted check.
* commonfops.c (unionfs_open): Undo add debug print of opened dentry.
* commonfops.c (unionfs_open): Add debug print of opened dentry.
2005-10-26 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c (inode_permission): Fix typo in NFS_SECURITY_HOLE.
2005-11-06 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* fist.h (lock_parent, unlock_dir): moved from now non-existent
missing_vfs_funcs.h
* inode.c (unionfs_create): use {,un}lock_rename instead of
double_{,un}lock
* rename.c (do_rename): use {,un}lock_rename instead of double_{,un}lock
* unlink.c (unionfs_unlink_whiteout): use {,un}lock_rename instead of
double_{,un}lock
* missing_vfs_funcs.h: removed
2005-10-25 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Makefile: Increment version to 1.1.2pre.
* regression/readdir.sh: readdir regression script.
It doesn't reproduce the bug for us, but extra tests can't hurt.
* dirfops.c (unionfs_readdir): Properly update uds_dirpos,
which fixes directory reading operations.
2005-10-24 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* compat.[ch]: Remove old files.
2005-10-24 Shaya Potter <spotter@cs.columbia.edu>
* copyup.c (copyup_file): Don't fput errors.
* copyup.c, unionfs.h: Use loff_t for copyup size.
* copyup.c (copyup_named_dentry): Code cleanup.
2005-10-21 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* AUTHORS: Update AUTHORS.
2005-10-21 Charles Duffy <cduffy@spamcop.net>
* xattr.c: Use ssize_t for xattr functions.
2005-10-20 Shaya Potter <spotter@cs.columbia.edu>
* dirhelper.c (check_empty): Respect opaqueness.
* Replace lock_super around branch management operations with a
Unionfs read/write semaphore. This will allow branchput/branchget
to operate concurrently, but prevent them from racing against
branchman operations.
2005-10-19 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c (unionfs_permission): Don't call normal permission before
inode_permission (our modified version of permission), because it
just duplicates work.
* commonfops.c (branchput_gen): Lock the super when we read putmaps.
* inode.c (inode_permission): If NFS_SECURITY_HOLE is defined
treat -EACCESS as if we should fall back on inode_permission.
* branchman.c (unionfs_ioctl_rdwrbranch): Make super/dentry
lock/unlock symmetric.
2005-10-18 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* NEWS: Updates NEWS file for release
2005-10-14 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* rename.c : Used the create_whiteout_parent function to
create the whiteout in unionfs_rename_all.
* subr.c : Brought the create_whiteout_parent back. These
squash Bug #442.
2005-10-13 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* rename.c : Fixed rest of Bug #425. Applied the patch
sent in by Junjiro Okajima.
2005-10-13 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* rmdir-all.sh: added test for bug 430. Not sure if
we are going to patch it yet but if we do the test
is there.
* regression/Makefile: added rmdircheckinode.c
* regression/progs/rmdircheckinode.c: program to check
if the inode numbers match after a failed rmdir.
2005-10-13 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* rename.c (unionfs_rename) : Fixed bug #425. The new_dentry
affects the unlink called by "mv" after the rename has failed.
It makes unlink return with -EISDIR. (partial fix)
2005-10-11 Shaya Potter <spotter@cs.columbia.edu>
* dentry.c (unionfs_d_revalidate): Fix a deadlock.
2005-10-06 Robert Glowczynski <roglo@op.pl>
* file.c (unionfs_fsync): Fix check for NULL lower-level operation.
2005-09-29 Patrik Weiskircher
* Makefile.kernel: Remove reference to locks.c.
2005-09-28 Junjiro Okajima <hooanon05@yahoo.co.jp>
* unlink.c (unionfs_rmdir_all): Always create whiteouts on directory
removal.
2005-09-28 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* commonfops.c (unionfs_file_revalidate): Properly update
generation when we combine copyup and reopening.
* Makefile: Remove some 2.4 cruft.
2005-09-27 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* branchman.c (unionfs_ioctl_incgen): Fix print indentation bug.
* unionimap.c: AMD64 fix from Gentoo.
2005-09-27 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* inode.c: Made change to use both inode_permissions and
permissions.
2005-09-27 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* INSTALL: Document MODDIR.
2005-09-23 Klaus Knopper <unionfs@knopper.net>
* inode.c: added inode_permissions to check for permissions
on a file even if its on an ROFS and used it in
unionfs_permissions
2005-09-22 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* Makefile: remove 'tags' target dependency from 'all'
2005-09-21 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* Makefile: forgot to remove locks.c from source list
2005-09-21 Junjiro Okajima <hooanon05@yahoo.co.jp>
* inode.c: Fixed several off-by-one kmalloc bugs.
2005-09-20 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* removed locking code from codebase since we no longer
handle locking (vfs will do it)
2005-09-18 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* removed 2.4 code from fist.h, inode.c, lookup.c,
persistent_inode.c, rdstate.c
2005-09-18 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* removed 2.4 code from copyup.c, dentry.c, dirfops.c
and file.c
2005-09-18 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* removed 2.4 code from stale_inode.c, subr.c, unionfs.h,
unlink.c, xattr.c
2005-09-17 Josef "Jeff" Sipek <jsipek@fsl.cs.sunysb.edu>
* removed 2.4 code from main.c, print.c, super.c,
xattr.c
2005-09-17 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* removed 2.4 code from branchman.c, commonfops.c
2005-09-16 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Makefile.kernel: Use EXTRA_CFLAGS.
* Makefile: Use ${LD} instead of ld, for cross compilation.
2005-09-15 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* Makefile: Updated to 1.1.0pre
* Makefile.kernel: Updated to 1.1.0pre
2005-09-15 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* NEWS: Updated for release.
* Makefile: updated for release.
* Makefile.kernel: updated for release
2005-09-12 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* locks.c: Removed locking code since its broken big define 0 around
it
* file.c: Removed locking references have the vfs handle it.
* unionfs.h: fixed bug with 2.4 compilation.
2005-09-08 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* main.c: Remove comment leftover from templates that doesn't make
sense in current context.
2005-09-05 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* commonfops.c: Remove lower fput debug printks.
2005-09-02 Shaya Potter <spotter@cs.columbia.edu>
* file.c (unionfs_mmap): Fix flag checking for mmap.
2005-09-01 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* We shouldn't use d_delete, vfs_unlink already does it. The only
known remaining 2.6.13 issue is the unionfs_lock (flock.sh in the
regression suite).
* inode.c,stale_inode.c: Support for 2.6.13's new follow_link
prototype. However, many of the regression tests fail for
unrelated reasons (or at least I think they are unrelated).
* unionctl.c: Allow --FOO to go before the union specifier (e.g.,
unionctl --list /mnt/unionfs now works).
* lookup.c: Don't partial lookup the root dentry.
* copyup.c: Check for permission setting errors.
2005-08-31 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* lookup_one_len never returns NULL.
2005-08-30 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c (unionfs_permission): Simplified code.
* inode.c (unionfs_link): Copy directory attrs to directory
(BUG391). Unfortunately, regression test doesn't quite catch the
bug because of a revalidate for the stat.
* commit: Don't complain about .sh file's indentation.
2005-08-29 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* INSTALL: tmpfs doesn't support fsync on directories
* Makefile: Update release target for new directory structure.
* patch-kernel.sh: Depend on Experimental, and move configuration
option to File Systems -> Miscellaneous file systems at the end,
not as the very first file system. Add UNIONFS_VERSION define.
Use tail -n +7 instead of tail +7.
* file.c (unionfs_fsync): Don't use dtohd on unlocked dentries.
2005-08-28 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c (unionfs_link): Don't use unionfs_interpose with
INTERPOSE_LINK any more, because only one line of the whole
function was being used anyway. This fixes an inode refcount leak
in unionfs_link, so the regression suite now passes with the new
locking, without any leaks.
* commonfops.c (unionfs_file_release): Update rdstate access time when
saving it in the inode (so that it won't be so quickly discarded).
2005-08-26 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* dirfops.c (unionfs_readdir) : removed the changes made
for the special way in which vfs_llseek was handles for
Reiser4, as Reiser4 introduced a patch which made it
behave properly.
2005-08-26 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Passes regression tests.
* Locking for create_parents. Regression tests from branchman to
open.sh PASS.
* Basic inode operations pass sniff test with new locking (regression
tests not yet tried).
* Dentries need locking, and there isn't much way around it.This
snapshot adds some untested locking, and you won't want to use it
yet. The basic principles are:
1. As soon as a VFS operation that touches a dentry is entered,
the dentry should be locked.
2. The lock ordering is:
Children before parents
Two children are tie broken with their address
There are several functions not done yet, most notably create_parents,
because it is going to require more thought (we walk up the parent
list and then back down it). This in part is why children need to go
before parents (also revalidate walks up the parent list).
2005-08-25 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* xattr.c: unused label causing a warning and inturn an error.
2005-08-25 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* main.c (interpose,reinterpose): Interposition should lock the dentry.
* file.c: CodingStyle, and we don't need to check ftopd before ftohf.
* file.c (unionfs_mmap): We were checking our file instead of the lower
-level file for having valid operations.
* dirfops.c,dirhelper.c: CodyingStyle
* copyup.c: There is no need for _len at the end of functions, because
other versions don't exist any longer.
* lookup.c (unionfs_lookup_backend): Lock the dentry private data
for the whole lookup routine.
* branchman.c: CodingStyle fixes.
* rdstate.c, super.c: Use KERN_ERR if we have unfreed objects.
2005-08-25 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* INSTALL: Fix losetup instructions.
2005-08-24 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* print.c: Avoid kmallocs.
* rdstate.c,dirfops.c: Code style cleanups.
2005-08-24 Anton Farygin <rider@altlinux.com>
* dentry.c (d_revalidate): Lock inode when freeing lower level ones.
2005-08-24 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionfs.h: Updated forwardmap version and added a new data
structure bmapent.(Later on these should be unified into one header
rather than being in 2 header files).
* persistant_inode.c: Updated code to use bmapents now.
2005-08-24 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionimap.c: Added code to ensure you dont add a filesystem with
the same fsid twice (no duplicate entries in the maps).
* unionimap.h: Added a new data structrue bmapent.
* The code in the kernel to read the maps hasent been changed so it
doesent work yet. Check back soon for that.
2005-08-24 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c (unionfs_create): Use proper permissions when recreating
a deleted file (BUG383).
2005-08-23 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* commonfops.c (copyup_deleted_file): Fix leak of name on subsequent
loop iterations.
* commonfops.c (copyup_deleted_file): Cleanup of major loop.
* unionfs.h (DPUT,KFREE): Don't try to free errors.
* main.c (unionfs_reinterpose): Remove d_unhashed assertion.
* unionfs.h (d_deleted): Create an inline function to tell
if a directory is deleted (i.e., unhashed and not the root).
2005-08-23 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* main.c (unionfs_parse_options): More checking for copyupmode.
2005-08-22 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* unionfs.h (get_nlinks): More intelligent link counting.
* inode.c (unionfs_create): Don't dput an IS_ERR.
* unionfs.h: sbstart is always zero
* main.c (unionfs_read_super): check_branch does existence checking
* unionfs_debugmacros.h: Fix stray printks.
The following fixes are so that the regression suite runs without
any memory or dentry leaks:
* branchman.c (unionfs_ioctl_addbranch): Zero newly allocated
arrays.
* copyup.c (unionfs_create_named_dirs): Fix leak of path stack.
* main.c: Handle get_parent.
* lookup.c: Make the logic to put preceding negative dentries a
function.
* unlink.c (unionfs_unlink_all): Fix dentry reference count leak.
* inode.c (unionfs_link): Properly handle lock_ and unlock_dir.
* match-dget.pl: Handle DS and DD for set and unset records.
2005-08-20 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* INSTALL: sendfile conflicts w/ Unionfs.
2005-08-19 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* dirfops.c (unionfs_readdir) : changed the way the
return value of the repeated vfs_llseek (with origin
=1) is used. this is to allow readdir in Reiser4,
which returns -ENOENT (!!!) for the llseek in same
cases. this is for Bug #358
2005-08-18 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* match-dget.pl: Insert both gets and puts into list of actions
for unreleased dentries.
* match-dget.pl: Dget matching script.
* Use DGET, DPUT, DENTRY_OPEN, and LOOKUP_ONE_LEN to
record when we dget and dput dentries.
2005-08-17 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* match-malloc.pl: Return number of errors.
* print.c (fist_print_generic_dentry): Print inode number.
* copyup.c (unionfs_create_named_dirs): Fix dentry reference leak.
2005-08-15 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* print.c (fist_print_file): Divide into generic and Unionfs halves,
ASSERT if we are passed a lower-level file.
* file.c (unionfs_lock): Handle write locks on r/o branches.
2005-03-03 Anton Farygin <rider@altlinux.com>
* dentry.c (unionfs_d_revalidate): Fix possible double unlock.
* branchman.c (unionfs_ioctl_incgen): Fix possible deadlock when
memory allocation fails.
2005-08-12 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* rename.c, commonfops.c : removed the
dget/dput functions sandwiching the vfs_unlink as
these raise the refcounts and cause the .nfsXYZ
files to get created after unlinks. This knocks
out Bug#364 for 2.6.
2005-08-11 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* main.c (unionfs_parse_dirs): Prevent recursive Unionfs mounts.
* branchman.c: Plug a few memory leaks.
2005-08-11 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* dentry.c (unionfs_d_release) : fixed a case that would
cause a reference to the lower-level nfs inode to be
present. This is part of #364.
2005-08-11 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* unionctl.c: Support --mode ro branch or --mode branch ro
* branchman.c: Only count putmaps that exist.
2005-08-10 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* man/unionctl.8: No need for warning about root directory anymore.
* commonfops.c: Kill branch deletion ioctl.
* super.c: Magic MS_REMOUNT to remove a branch.
* unionctl.c: Use remount instead of ioctl to remove a branch.
* branchman.c (unionfs_ioctl_delbranch): Take the super, not an inode.
2005-08-10 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* dentry.c (unionfs_d_revalidate): All exit paths should go through
out.
* main.c (unionfs_parse_options,unionfs_parse_dirs): Simplified
option parsing using strsep rather than direct pointer manipulation.
Organized the options into types to factor out common code.
2005-08-09 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* debian/*: Use official debian packaging files.
* Some AMD64 fixes.
* vprintk wrapper for 2.4.
2005-08-09 Jan Engelhardt <jengelh@linux01.gwdg.de>
* unionctl.c: Do not truncate "/" to "" when stripping the last "/"
from directories.
2005-08-05 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* main: Use FS_REVAL_DOT so that directories are always revalidated
during lookup.
* Drop err=passup, as it is unmaintained.
2005-08-05 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* commonfops.c (unionfs_flush) : changed the dput to give
more symmetry and readability to the code.
2005-08-04 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* dentry.c (unionfs_d_revalidate) : return successfully if the
dentry is unhashed
* commonfops.c (unionfs_flush) : corrected the d_unhashed check
2005-08-04 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* branchman.c (QUERY): Don't copy FD_SET before ioctl. FD_ZERO the
set before the call.
* branchman.c (newputmap): Subtract the count from old putmaps from
the brand new putmap's count.
* branchman.c (unionfs_ioctl_delbranch): Use putmaps.
* lookup.c (new_dentry_private_data): Fix branch removal when
transitioning from > UNIONFS_INLINE_OBJECTS to ==
UNIONFS_INLINE_OBJECTS.
2005-08-03 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionfs.h,main.c,super.c,inode.c: removed all code
pertaining SETATTR_ALL since the feature is not necessary
and complicates things.
* man/unionfs.4: removed text pertaining to the setattr
mount option.
2005-08-03 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* unionfs.h (putmap): We need to keep track of the mapping between
branch numbers for older generation numbers and the current
generation so that we can properly branchput.
* branchman.c: Add functions to manipulate putmaps.
* commonfops.c: Use putmaps for revalidation and close.
2005-08-03 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* dentry.c (unionfs_d_release) : added a check to take care
of the case when the dentry coming into release is from a
failed lookup. This knocks bug #303 out.
2005-08-03 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Remove older non-opaque directory mode.
2005-08-01 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* lookup.c (unionfs_lookup_backend): Skip those hidden
dentries that are NULL.
2005-08-01 Jan Engelhardt <jengelh@linux01.gwdg.de>
* print.c (fist_dprint_internal): Use vprintk instead of
vsnprintf/printk combo.
2005-08-01 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* unionfs_debugmacros.h (branchget,branchput):
ASSERT if a branch's count goes negative.
* super.c (unionfs_put_super): ASSERT if the branch
counts are not zero on unmount.
* commonfops.c (unionfs_file_release): Don't put branches
that we didn't get.
* commonfops.c (unionfs_open): Don't get a branch until
we open it.
* commonfops.c: Fix generation number increment.
2005-07-26 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* main.c: cleaned up parse_options code for copyup,
copyupuid,copyupgid,copyupmode.
2005-07-26 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* unlink.c, main.c, rmdir.c, rename.c: Remove obsolete
and unmaintained DELETE_FIRST mode.
2005-07-26 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* man/unionfs.4: Added default behavior into the options
section for entries that didnt already have it.
2005-07-26 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* main.c (unionfs_parse_options): Move directory parsing
out of parse options function, so we don't have as many 4+ level
indents.
2005-07-25 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Makefile: Update version number to 1.0.14pre.
2005-07-25 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* man/unionimap.8: Minor editing.
2005-07-24 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* man/unionimap.8 : finished the man page: added a verbose
description and examples.
2005-07-22 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* man/unionimap.8 : added descriptions to options in the
option section.
2005-07-22 Jan Engelhardt <jengelh@linux01.gwdg.de>
* unionctl.c: Use realpath so that relative pathnames are allowed
for mountpoints and branches.
2005-07-22 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* subr.c (create_whiteout_parent) : removed this function
as it is not called anymore (#258).
2005-07-22 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Makefile: Update version to 1.0.13.
* Makefile: Include new regression tests in distribution.
* man/unionimap.8: An empty placeholder man page.
2005-07-21 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* missing_vfs_funcs.h: Removed get_parent function since the 2.6
kernel has a dget_parent function which is the appropriate one to use
also made note that the templates do not use either triple_up or triple_down
* unionfs.h: checked to see if we are in 2.6 and if so define get_parent to be
dget_parent.
* unionimap.c: fixed a typo in the usage example.
* man/unionfs.4: added an entry for imap
2005-07-21 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* copyup.c (unionfs_create_named_dirs) : corrected the
function to get rid of problems with the open-unlink
regression test.
2005-07-20 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* unlink.c (unionfs_rmdir_all) : added checks to ensure
that the delete_whiteouts is not called for files. this
is a fix for bug 323
* rename.c (unionfs_rename_all) : changed the whiteout
creation call to "create_whiteout" instead of the
"create_whiteout_parent". this must solve 332.
* rename.c (unionfs_rename_whiteout) : change similar
to above to correct #336.
2005-07-20 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c (unionfs_file_revalidate): Handle GFS and don't try
to reopen files that no longer exist.
* subr.c (unionfs_copyup_named_dentry_len): Add a bit of debugging.
* Fix comments that are past 80 characters and some other
minor style issues.
* subr.c (unionfs_create_whiteout): Don't set the parent's
opaque field when creating a whiteout, set your own.
2005-07-20 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Fix things so that we compile on 2.4 again, and use the
older form of ioctl for kernels less than 2.6.11.
* ChangeLog: 80 character entries.
2005-07-19 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* unionctl.c: Check if we are trying to remove a branch while
this process is causing it to be busy and print an appropriate
error message.
* man/unionctl.8: Minor edits.
2005-07-19 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* branchman.c (unionfs_ioctl_queryfile) : changed
function replacing lookup_one_len by partial lookups
(second commit) : changed O_NONBLOCK to O_RDONLY
2005-07-19 Shaya Potter <spotter@cs.columbia.edu>
* unlink.c (unionfs_unlink_whiteout): Don't rename a symlink
to a whiteout, we need to unlink and create instead.
2005-07-18 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* unlink.c (unionfs_unlink_all) : checked if the dbopaque
value is set for the current dentry, as this will
indicate if there is a file to the right of the current
file (Fix BUG #319).
2005-07-18 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* commonfops.c: Use unlocked_ioctl when it is defined.
* branchman.c: Change prototypes to be more consistent with
unlocked_ioctl.
* commit: Script for committing files
* Lindent: Linux indentation script.
* *.[ch]: Add emacs magic.
2005-07-14 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* lookup.c (unionfs_lookup_backend) : fixed bug #321
(that is, removed the semicolon that was introduced
in the unionfs-042605-1324.tar.gz snapshot.
2005-07-14 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* copyup.c (unionfs_create_named_dirs) : corrected the usage of
the name and namelen arguments sent into the function. This
should take care of both bugs #299 and #322.
2005-07-13 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* branchman.c (unionfs_ioctl_queryfile) : added ioctl definition
that lists those branches where the specified file exists(#253).
* commonfops.c (unionfs_ioctl) : added the new ioctl.
* fist.h : added an include for the fd_set helper functions
* unionfs.h : added a structure unionfs_queryfile_args to
pass variables to the new structure.
* unionctl.c : added the user interface
* uniondbg.c : rearranged the includes to help compilation
2005-07-08 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* unionfs.h : added variables uii_totalopens and uii_writeopens to
help in keeping filehandles valid after unlinks until closes.
* fist.h : included random.h to help get random bytes for file names
* commonfops.c (unionfs_file_revalidate) : added functionality to copy
the lower-level file into a file with a randomly generated name
obtained by using the newly added function "get_random_name" in
commonfops.c
(unionfs_open, unionfs_flush) : updated the uii_totalopens and
uii_writeopens to be set and checked during the time of opening and
flushing the file.
* copyup.c (unionfs_copyup_dentry_len) : made this into a wrapper
function which now accepts the name of the file
(unionfs_copyup_named_dentry_len).
(unionfs_copyup_file) : similar wrapper to unionfs_copyup_named_file
as above.
(unionfs_create_dirs) : similar wrapper to unionfs_create_named_dirs
as above
(unionfs_copyup_named_file) : added function similar to
unionfs_copyup_file which takes the file name as argument as well.
* main.c (unionfs_reinterpose) : ensured that deleted dentries are not
reinterposed.
* dentry.c (unionfs_d_revalidate) : changed the check for deleted
dentries to use the d_unhashed function also.
2005-07-07 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* main.c: Ohh my god the inodes are persistent. Ohh and changed
interpose to use get_uin if we are using persistent inode maps.
2005-07-07 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* super.c: fixed problem with kernel version number in an ifdef
2005-07-07 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* dirfops.c: removed some debugging printk statments.
* persistent_inode.c: finished debugging and cleanedup get_uin.
2005-06-30 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionfs.h added extern decls for get_uin and get_lin
* persistent_inode.c: more work on the loading code and get_uin and
get_lin
* dirfops.c: changed to make use of the persistent inode code only
if maps are loaded.
2005-06-28 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* persistent_inode.c: changed how files are loaded in should be
done still need to test
* unionfs.h: added a new variable into unionfs_superblock_info
* unionimap.c: changed called to mkfsid
* usercommon.c: changed fillfsid and mkfsid. No longer uses the inode
since it will always be 2 since we are using the root of the fs.
2005-06-24 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* Makefile: added usercommon.c into the make targets
* usercommon.c: Moves find_union to here and fixed it up
* unionimap.c: uses mkfsid now if fsid comes back as 0
* unionimap.h: added extern for mkfsid
* persistent_inode.c: fixed some bugs
* unionctl.c: removed find_union from here and updated calls to it.
2005-06-23 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* dentry.c (d_revalidate): We shouldn't re-lookup
non-connected dentries.
2005-06-23 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* Makefile: Include Makefile.kernel.
* subr.c (create_whiteout, create_whiteout_parent): Set the dbopaque
value to the branch where the whiteout gets created. This is to solve
bug #294.
2005-06-22 Arun M. Krishnakumar <arunmk@fsl.cs.sunysb.edu>
* commonfops.c (unionfs_open): If the highest-priority branch
is read-only return -EROFS for opens with O_WRITE.
2005-06-21 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* persistent_inode.c: parse_imap_options and associated calls are
working. maps are loaded in properly. Still need to finish and test
calls to use the maps.
2005-06-17 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* persistent_inode.c: it appears that parse_imap_options is working
and so is verify_forwardmap. verify_reversemap needs to be fixed.
2005-06-17 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* persistent_inode.c: Fixed some bugs still not working properly
* unionfs.h: added typedef for uuid_t.
* doit.sh: added imap entry into script.
2005-06-17 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* INSTALL: If you have Fedora Core 4, then you need kernel-devel.
* Makefile: Fix the Makefile so that it won't recompile every
object every time.
* unionimap.c: Fix printf formats.
2005-06-16 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionimap.c : Fixed a bug that prevented compiling on newer
gcc versions
2005-06-16 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionimap.c : Tested and working we can now make and print valid
unionfs imap files.
2005-06-16 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionimap.c : finished coding starting testing and debugging.
* unionimap.h : minor changes
2005-06-15 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionimap.c : wrote some more code not tested yet
* unionimap.h : added a struct that is needed.
* Makefile: Cleanedup a conflict.
2005-06-15 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* fist.h,print.c,unionfs.h: Change NODEBUG to UNIONFS_NDEBUG to be
more inline with the rest of the kernel.
* print.c: Wrap in UNIONFS_NDEBUG, so there is no need for a separate
flag to not compile it.
* unionctl.c: Add Unionfs version to help message
(not just unionctl version).
* unionimap.c: Add version to help message.
2005-06-12 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* main.c, match-malloc.pl: Handle KFREE(NULL).
* commonfops.c (unionfs_file_revalidate): NULL ftohf_ptr after freeing
it.
* commonfosp.c (unionfs_open): Allocate correctly sized ftohf_ptr.
2005-06-10 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionimap.c: Beginning of a user mode program to create inode map
files.
* unionimap.h: Header for program.
* unionfs.h: added definitions for imap structs
* Makefile: added make targets for unionimap.c and .h
2005-05-26 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* persistent_inode.c: Comment out 64-bit division.
2005-05-25 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionfs.h : added some variables to the unionfs_sb_info struct to
handle persistent inodes.
* persistent_inode.c : more work done on the parsing functions almost
done but not quite there yet.
* main.c : added entry in parse_options to handle persistent inodes.
2005-05-24 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* unlink.c (unionfs_unlink_whiteout): Missing dput in truncating fix.
* unlink.c (unionfs_unlink_whiteout): Truncate whiteout after it
is created.
2005-05-23 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Test commit.
* inode.c (unionfs_create): Fix ASSERT that had a side-effect.
This fixes a dentry reference count bug if you compile with
-DNODEBUG.
2005-05-19 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* unlink.c: Empty a directory of its whiteouts before deleting it,
and refresh the hidden dentry on a failed rmdir.
* unionfs.h: Always include ufi_file_i, so we can compile with zero
inline entries if we want.
* Test commit.
* Makefile: Define UNIONFS_VERSION to be the current version.
* main.c: Print the version of Unionfs, not main.c.
2005-05-17 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* lookup.c (unionfs_lookup_backend): Fix partial lookups for
three or more branches.
2005-05-16 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* lookup.c (unionfs_lookup_backend): Change UNIONFS_LOOKUP_PARTIAL
to UNIONFS_LOOKUP_REVAL_NEG, when a dentry magically turns positive
on us.
2005-05-14 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* lookup.c (new_dentry_private_data): Fix memset'ing logic.
* branchman.c (unionfs_ioctl_addbranch): Fix copying logic.
* inode.c(unionfs_follow_link): Return 0 not the number of bytes
in follow_link.
* Reduce Unionfs module size when NODEBUG is set by not compiling
print.c, and using a different set of macros that don't require
__FILE__, __FUNCTION__, and __LINE__, and don't do as much checking
because we've aleady turned ASSERT off.
* Support for inline objects, so that we don't need more
than one allocation for inodes and only two for dentries (the dentry
itself and its private data).
* Separate directory file operations from normal file operations.
2005-05-13 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Makefile: Increment version number.
* Makefile: Release 1.0.12
2005-05-13 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c: Disable generic_file_sendfile, because it causes nfsd
to Oops.
* lookup.c (unionfs_lookup): Don't ASSERT dentry goodness along
the error path.
* dentry.c (unionfs_d_release): Handle dentries without dthod_ptrs.
2005-05-11 Jaspreet Singh <jsingh@ensim.com>
* main.c (unionfs_interpose): Move fist_copy_attr_all before
d_instantiate so Selinux can decide what type of inode it is.
2005-05-13 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* Makefile : fixed spelling mistake
* persistent_inode.c : fixed typo for compilation
2005-05-12 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* persistent_inode.c : Stupid spelling mistake in the name
of the file.
2005-05-12 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* persistant_inode.c : Functions needed to establish and maintain
a persistant inode scheme for unionfs.
* main.c : modified parse options for persistant inodes. Not done yet
2005-05-11 Jaspreet Singh <jsingh@ensim.com>
* copyup.c (unionfs_copyup_xattrs): Don't use XATTR_CREATE,
instead use 0 so that it is replaced or created as needed
(Selinux automatically creates attributes.
2005-05-11 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* print.c (fist_print_generic_dentry): ASSERT(d_count > 0) so
that we find dentries gone bad earlier rather than later.
* inode.c (unionfs_mkdir): bend should not go past the opaque
directory, but stay there.
2005-05-10 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* INSTALL: Add root file system instructions based on Linux
Live's linuxrc.
2005-05-08 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* main.c,super.c,lookup.c: Use alloc_inode in 2.6, so that only
two allocations need to be made per inode instead of two. In
both 2.4 and 2.6 use a private kmem_cache for our dentry data,
so that we don't need to waste space by having kmalloc round up.
* lookup.c (new_dentry_private_data): Merge initialization and
reinitialization code from lookup and read_super. Also don't
reallocate dentry private data if we already have enough space.
* INSTALL: Add Jaspreet Singh's selinux instructions.
* INSTALL: Add EXDEV on ro branch rename as a limitation.
* inode.c: follow_link and put_link fix for 2.6.
* lookup.c: Compile fix for 2.4.
* rename.c: If a directory is moved on a read-only branch return EXDEV,
so that mv essentially does a cp -r (recursive copyup in the kernel
would be too ugly).
2005-05-06 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* lookup.c: Merge unionfs_lookup_backend and unionfs_partial_lookup,
partial lookups will now properly handle whiteouts.
* print.c: Fix compile error when NODEBUG is defined.
* lookup.c: Fix BUG 264.
* print.c: Separate generic inode printing from itohi printing.
Use const for print functions.
2005-05-05 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Code style fixes.
2005-04-27 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* inode.c changed ops vectors to C99 style initialization.
* file.c changed ops vectors to C99 style initialization.
* dentry.c changed ops vectors to C99 style initialization.
* super.c changed ops vectors to C99 style initialization.
* stale_inode.c changed ops vectors to C99 style initialization.
2005-04-21 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionfs.h: added no check versions ot set_dtohd_index
and dtohd_index.
* dentry.c: changed a function call to dtohd_index_nocheck
2005-04-26 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* lookup.c (unionfs_lookup_backend): When a whiteout is encountered,
set opauqeness as we do with opaque directories, to prevent partial
lookup from seeing past the whiteout.
* lookup.c: Separate file for lookup code.
* subr.c: Move unionfs_partial_lookup to lookup.c.
* inode.c: Move unionfs_lookup to lookup.c:
* rename.c: Don't print lower-level dentries using a Unionfs
specific function.
* print.c: Divide fist_print_dentry into one function for Unionfs
specific dentries, and then a generic function. Also ASSERT that
we are really printing a Unionfs dentry (so we don't dereference
bad private data).
* Fix indentation comments.
2005-04-25 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* subr.c: Code style fixes.
2005-04-22 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* NEWS: Keep NEWS up to date.
2005-04-21 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c (unionfs_filldir): Don't strncmp for .wh., if the
name's length is less than 4. Old cruft can make things
go horribly bad (BUG 254).
* inode.c (unionfs_lookup_backend): Properly handle file
transitioning from a negative to a positive dentry. (BUG 215)
2005-04-21 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c: Sendfile only exists on 2.6.
* main.c: Catch UNIONFS_REVAL_NEG specifically, still
need to understand/fix.
2005-04-20 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* subr.c (unionfs_partial_lookup) ,unionfs.h
(unionfs_dentry_info), inode.c(unionfs_lookup):
Correctly mark a directory as opaque and respect that
during partial lookups.
* Exorcise struct typedefs and "fake" STATIC functions.
* inode.c: Experimental support for opaque directories,
not all of the loose ends are tied up, so this snapshot
will have some associated oddities.
* xattr.c: Use EOPNOTSUPP, not ENOTSUPP.
* Makefile, unionfs.h: Separation of rename/unlink code.
* rename.c: Separate rename code from inode.c
* unlink.c: Separate unlink code from inode.c
2005-04-20 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* rdstate.c, unionfs.h: DOH, We were checking if
uii_rdversion <= MAXRDCOOKIE to decide whether or not
to wrap uii_cookie.
2005-04-19 Fabian Franz <fs-bugs@fabian-franz.de>
* applied patch to file.c that uses generic_file_sendfile
to implement sendfile.
2005-04-18 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* removed a stray printk
2005-04-18 Markus F.X.J. Oberhumer <markus@oberhumer.com>
* file.c, locks.c: Use #ifdef for 64-bit locking
commands, which are not defined on amd64.
2005-04-18 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* copyup.c: Extended attributes now copyup properly.
This has only been tested in 2.6 but I see no reason
that it shouldent work in 2.4
* copyup.c: unionfs_create_dirs is now nolonger bound
by MAX_DIRS_CREATE. We now use kmalloc to dynamically
allocate memory for it and "realloc" the memory when
needed.
2005-04-18 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* copyup.c: Use list_size as the argument to xattr_free, not the
MAX_LIST_SIZE.
* file.c: ASSERT was asserting on the dentry, not the i_mode.
2005-04-16 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c: Delay copyup of read-write files located on read-only
branches, until an operation will actually write to them (BUG 225).
* INSTALL: Cleanup kernel instructions a bit.
2005-04-13 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* inode.c: unionfs_mkdir now spoofes the uid and gid of the owner
of the whiteout file for the purpose of removing it.
2005-04-11 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* patch-kernel.sh : Script written to move unionfs into the kernel
source tree. The original script was submitted by Sven Geggus however
the script was cleaned up and modified for various reasons. Check the
file for more details.
* Makefile: PHONY added to the utils target to aid in building them
for the kernel.
* INSTALL: Directions added for building unionfs into a monolithic kernel.
2005-04-11 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* copyup.c : changed comparison from > to >= to be compatable with 2.6.0
* fist.h : same as above
* unionfs.h : same as above
* rdstate.c : same as above
* main.c : same as above
* inode.c : same as above
* super.c : same as above
* xattr.c : sme as above
2005-03-24 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* unionfs.h : changed UNIONFS_SUPER_MAGIC. All fist based file systems
will have the first 2 bytes of the MAGIC number be f15f.
* super.c : statfs struct is now properly filled.
2005-03-23 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* INSTALL: removed the warning about NFS exports
* Makefile: Increases release number.
* NEWS: Added release news for 1.0.11
* unionfs.h: added a function rdstate2offset
* file.c: redid llseek and readdir implementation
* rdstate: redid find_rdstate
2005-03-21 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Add big warnings that NFS exports won't work in 1.0.10.
2005-03-17 Terry Barnaby <terry1@beam.ltd.uk>
* rdstate.c (find_rdstate): Factor out rdstate search.
* file.c (unionfs_dir_llseek): Use rdstate if it exists.
2005-03-16 Terry Barnaby <terry1@beam.ltd.uk>
* Makefile: fix clean target
* file.c (unionfs_dir_llseek): Fix mistaken use of origin
instead of offset.
2005-03-16 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* super.c (unionfs_statfs): Use shifting instead of division.
2005-03-15 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* super.c (unionfs_statfs) : df now reports the proper numbers.
duplicate super blocks are not factored into the calculations and
all the block sizes are normalized to the first partition.
2005-03-14 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* main.c (unionfs_read_super) : In 2.4 the kernel expects a valid
super block or null we were returning an error pointer and this
caused an Oops. This has been fixed.
2005-03-10 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* unionfs_getlk (unionfs_getlk): Add preprocessor define for
2.6.11+, and add a missing case.
2005-03-10 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* locks.c (unionfs_setlk): fixed a typo in the 2.6 function
2005-03-10 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* misc/snapmerge: Explain how to get two snapshots merged into one
snapshot.
* file.c (unionfs_dir_llseek), locks.c (unionfs_setlk): Fix build
on 2.6.
2005-03-09 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* file.c (unionfs_lock): function is completely rewritten to actually
work.
* locks.c (unionfs_setlk,unionfs_getlk): locks.c was added to house
locking functions so file.c doesent get overcrowded. unionfs_setlk
and unionfs_getlk were added and placed in this file with some
helper functions for 2.6
2005-03-08 Terry Barnaby <terry1@beam.ltd.uk>
* file.c (unionfs_dir_lseek): Allow seek to beginning/end of dirs.
2005-03-07 Fernando Freiregomez <fernado.freiregomez@telefonica.es>
* misc/snapmerge: Fix permissions/times after copying files.
2005-03-07 Lucas Correia Villa Real <lucasvr@gobolinux.org>
* Makefile: Use MODDIR instead of /lib/modules/`uname -r`
2005-03-07 Eduard Bloch <blade@debian.org>
* man/*: Fix man page sections
* Makefile: Add separate modules target, remove excessive uname -r's
so that kernel version can be overridden.
2005-03-03 Anton Farygin <rider@altlinux.com>
* Makefile: Can now build utilities without building kernel module.
2005-03-03 Terry Barnaby <terry1@beam.ltd.uk>
* dentry.c (unionfs_d_revalidate): Use fist_copy_attr_all to
make the cache appear more coherent.
2005-03-02 Fabian Franz <fs-bugs@fabian-franz.de>
2005-03-02 Anton Farygin <rider@altlinux.com>
* dirhelper.c: Fix BUG 184: vfs_readdir is allowed to return positive
results.
2005-03-02 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c (unionfs_readdir): Remove buf.error which was unused.
2005-03-02 Anton Farygin <rider@altlinux.com>
* Fix BUG 205: mv on symlinks
* Fix BUG 203: Kernel oops on creat file with len of name > 252
2005-02-24 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* RPM spec file included in release. Remove CVS directory from
debian directory in release.
* Add fsid= to interactions, with pointer to exports(5).
2005-02-22 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* unionctl.c (find_union): Start off w/ a 1K buffer and double it
if the lines in /proc/mounts don't fit. Thanks to J. H. Wilson for
finding and patching this bug.
* main.c (unionfs_interpose): Reorganize if statement.
* rdstate.c (add_filldir_node,find_filldir_node): Don't print the
names in debug mode because they aren't '\0' terminated.
2005-02-22 Fabian Franz <fs-bugs@fabian-franz.de>
* Applied patch to bug 193 Fixed the problem with
hardlinks not having the same inode number.
2005-02-22 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* dentry.c (unionfs_d_delete): d_delete should not be defined (or
call the lower d_delete). Thanks to Fabian Franz for identifying
this issue.
2005-02-22 Fabian Franz <fs-bugs@fabian-franz.de>
* copyup.c (unionfs_copyup_dentry_len): Applied patch provided
for bug #196. A device was being decoded when it didnt have to be.
2005-02-22 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* README: Article URL.
2005-02-18 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* dirhelper.c (create_dir_whs) : commiting chips change to make
sure it creates whiteouts properly.
2005-02-17 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* INSTALL: Squashfs is generally OK, but we do have flock problems.
* file.c (unionfs_dir_llseek): Untested fix for BUG 187.
2005-02-09 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* inode.c (unionfs_link): Fixed linking if the underlying file
system is read-only. The fix causes an issue with device being
busy on umount. * rdstate.c (find_filldir_node): Print statement
was referencing a bad pointer.
2005-02-08 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* copyup.c (unionfs_copyup_xattrs): Use PASSERT, other compile fixes.
* xattr.c (xattr_alloc, xattr_free): Shouldn't be static.
* Go back to GFP_KERNEL, because GFP_NOFS causes problems with vserver.
2005-02-08 Jaspreet Singh <jsingh@ensim.com>
* copyup.c (unionfs_copyup_xattrs): Use security functions.
2005-02-08 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* copyup.c (unionfs_copyup_xattrs): Take the inode lock as is done in
setxattr.
* inode.c (unionfs_link): Reference counting on error paths/compile fix.
2005-02-07 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c (unionfs_link): On copyup path directory was not unlocked.
2005-02-07 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* copyup.c (unionfs_xattr_copyup): Review of code, not yet tested.
* inode.c (unionfs_link): Revert to Chip's version of
unionfs_link.
2005-02-07 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Makefile: Allow module prefixes to be specified for
RPM_BUILD_ROOT
* rpm/unionfs.spec: Compiled, tested, and installed.
2005-02-06 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* Makefile added a target for uninstall to accomodate rpm removal
2005-02-02 Anton Farygin <rider@altlinux.com>
* copyup.c (unionfs_copyup_permissions): Use ATTR_FORCE to make
sure any user can change permissions.
* copyup.c (unionfs_create_dirs): Twiddle current->fsuid/fsgid
so that any user's copyup will behave properly.
2005-02-02 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c (unionfs_mmap): Don't ASSERT that the lower mmap
operation is there, instead return ENODEV, as is done in
do_mmap_pgoff. NTFS (and others) don't support mmap, so
neither should we when stacked on top.
2005-02-01 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* dirhelper.c : fixed 2.6 compilation. call to vfs_creat missing
last param in 2.6
* Makefile : namei.c is no longer needed so it was removed from
the make file.
2005-01-28 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* subr.c, dirhelper.c: Move mkdir/rmdir helpers into separate
file.
* unionfs.h, fist.h: Remove unused/redundant definitions.
2005-01-26 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* rdstate.c, unionfs.h: Move finding and adding filldir nodes
into rdstate.c. This reduced the readdir code size, and should
also let us reuse the code for the subr.c functions.
* subr.c: Use an rdstate instead of a second readdir to remove
files in delete_whiteouts.
* namei.c: Removed vfs_unlink_nozombie.
2005-01-19 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* INSTALL: Add more CFLAGS options to make things smaller.
* unionfs.h, file.c, rdstate.c: Change DIREOF from -1 to 2^31-1 to
fix readdir.
* unionctl.c: Don't strip trailing slash for "/" when searching for
the Union.
* Makefile: Include INSTALL.
2005-01-14 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* branchman.c (unionfs_ioctl_addbranch): Fix error path resource leak.
2005-01-14 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* copyup.c (unionfs_copyup_permissions): Changed so it actually works now
instead of corrupting certian bits.
* copyup.c (unionfs_create_dirs): Function actually uses unionfs_copyup_permissions
for setting directory permissions instead of setting them explicitly.
2005-01-14 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c (unionfs_dir_llseek): Allow llseek to the current
offset in the directory, but nowhere else.
* file.c (unionfs_readdir): Save the last offset, so we
can lseek to it (for pretend).
* Remove all occurrences of GFP_KERNEL and replace with GFP_NOFS,
so our allocations can't cause file system calls.
2005-01-13 Rakesh N. Iyer <riyer@fsl.cs.sunysb.edu>
* file.c (unionfs_readdir): Fixed deadlock in rdstate search.
2005-01-13 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Split README into INSTALL as well.
* Makefile: Spit out a message saying to read install.
* Don't build xattr functions w/o -DUNIONFS_XATTR
2005-01-11 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* inode.c: Initial implementation of hardlinking a file on a read only branch.
Attributes are not copied properly yet.
2005-01-10 Sai Suman <suman@pantasys.com>
* copyup.c: Fix usage of unionfs_copyup_permissions.
2005-01-10 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* super.c: 2.4 compile fixes
* fist.h: Updated FISTBUG for gcc 2.9.5
2005-01-10 David P. Quigley <dquigley@fsl.cs.sunysb.edu>
* xattr.c: Format changes for size_t.
* doit.sh: Call optional postdoit script
2005-01-10 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* AUTHORS file.
* README updates.
* Allow NFS exports on 2.6 (Sai Suman)
* Fixes to print format in xattr.c (Sai Suman)
* debian/*: Debian packaging from Alex de Landgraaf.
* Remove -Wno-unused-label for gcc 2.9.5 (alex@delandgraaf.com).
* Allow "EXTRACFLAGS=-DNODEBUG" in fistdev.mk to disable
the printing/ASSERT facility, cutting object size in half.
2005-01-09 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* unionfs.h: Warn when compiling on unsupported kernels.
* super.c: Compile fix for 2.6.8.
* Makefile: Include ChangeLog in the release.
2005-01-07 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Prepare 1.0.6 release.
* Fix 2.6 compile issues in new code.
* rdstate.c: Move readdir state away from subr.c.
Use a kmem_cache for filldir nodes.
* copyup.c: Move copyup functions away from subr.c
2005-01-06 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c: Working NFS readdir. On close we store left-over
readdir state in the inode for up to 5 seconds. If a readdir
has a matching cookie, then we pull the state out of the inode
and use it. We also needed to use our own offsets, otherwise
the NFS client got confused.
* subr.c: Remember the number of entries in our hash table for
each inode, and use that as the number for the next readdir.
* Makefile: Fix dependencies on .h files.
* print.c: Consistencify printing of files and superblocks
and shorten some overly verbose output that added no information,
but reduced the effective kernel log size.
* fist.h: Make gcc check fist_dprint_internal formats.
* file.c,unionfs.h: Separate readdir state into a separate structure.
* file.c,unionfs.h,subr.c: Make readdir state use variable sized
hash tables based on number of pages in lower-level directories.
* Makefile: Install unionfs.ko, not unionfs.o if it exists.
* main.c: Remove MODULE_PARM because it is deprecated.
2005-01-04 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c (unionfs_read): Fix "inifite" cat bug on 2.6
* Makefile: Auto-select 2.4 vs. 2.6 for build.
* Unify 2.4 and 2.6 Makefiles
* Fixes for printing file structures at debug level 18.
* Fixes for 2.4 compilation.
2004-12-30 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* *.[ch]: Update year.
2004-12-29 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c: Embed rename.txt into comment.
2004-12-29 Charles P. Wright <cwright@cs.sunysb.edu>
* inode.c, unionfs.h: Changed directory copyup function back to
old prototype.
* subr.c (unionfs_copyup_dentry_len): Handle directories, devices,
and symlinks.
2004-12-27 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c: Only request copyup of parent directories.
* subr.c (unionfs_copyup_dentry_len): Handle directory copyup
(required for chmod).
* main.c (unionfs_parse_options): Fix along error path.
2004-12-06 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* main.c (unionfs_interpose): Allow mount point crossing.
* README, Makefile, inode.c: Turn off extended attributes, unless
the user specifically turns them back on by defining UNIONFS_XATTR.
This prevents us from getting various compile errors depending on
vendor-specific patches.
2004-11-10 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Fix .cvsignore and release.
* README: Added warning that anything less than 2.4.20 is unsupported.
* namei.c: Removed inode_dir_notify calls when we are on less than
2.4.20, because the symbol is not exported.
* Fixed lots of bad casts from pointer to int in printks.
* main.c (unionfs_parse_options): Fix for badly ordered variables.
* main.c (unionfs_read_super): Remove double free along error path.
* wrapfs.h (dtopd_lhs): Remove cast from LHS of assignments.
2004-11-09 Erez Zadok <ezk@cs.sunysb.edu>
* released unionfs-1.0.2.
* README (site): fix typo. missing "`".
* Makefile (clean): remove tarball.
* README: updated.
2004-11-09 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* released unionfs-1.0.1.
* Makefile: Include man pages in the release.
2004-11-07 Erez Zadok <ezk@cs.sunysb.edu>
* released unionfs-1.0.
* announce-email.txt: revised announcement text.
2004-09-23 Erez Zadok <ezk@cs.sunysb.edu>
* announce-email.txt: draft announcement email.
* README: revised.
2004-09-15 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c: Don't allocate directory hash table for files.
* inode.c (unionfs_setattr): Don't do partial lookup if setattr is not
set to all (should improve delete_whiteout).
* Some grayout code (we don't discuss rename_first anymore, so it
actually doesn't matter).
2004-08-24 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* namei.c (vfs_create_nozombie): Whiteout creation needs a version
of vfs_create that won't down the i_zombie.
* subr.c (create_dir_whs_filldir): Don't ASSERT that the whiteout
doesn't already exist, because we can have multiple files with
the same name in other branches.
2004-08-23 Mohammad Nayyer Zubair <zubair@filer.fsl.cs.sunysb.edu>
* inode.c (unionfs_mkdir, unionfs_symlink, unionfs_mknod): lookup
whiteout in 'bstart' not 'bindex'. We always looked up on first branch
as bindex was set to 0
2004-08-20 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c (unionfs_inode_revalidate): Walk up the tree to revalidate
inodes like we do for dentries.
* inode.c, subr.c, unionfs.h: Use multilocks to protect against
unionfs_partial_lookup and revalidate operations racing against
each other.
* unionfs.h: Implementation of "multilocks".
* Makefile: install target
* We don't change size, so no sca_*.[ch] files.
* main.c (unionfs_hidden_dentry_index): This function is unused now
that Mohammad took it out, so I removed it.
* Removed unnecessary files.
* COPYING: SUNY we can't be blamed for anything notice; and the GPL.
2004-08-19 Mohammad Nayyer Zubair <zubair@filer.fsl.cs.sunysb.edu>
* inode.c (unionfs_setattr): using dtohd_index() instead of
unionfs_hidden_dentry() because an intermediate hidden dentry
could be NULL and we dont want PASSERT to oops on us
2004-08-19 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c (unionfs_unlink_all): We shouldn't have negative dentries
unless they are the first one.
* inode.c (unionfs_inode_revalidate): PASSERT(hidden_inode) instead
of Oopsing.
* inode.c (unionfs_rename_all): Typo in the clobbering unlink.
* inode.c (unionfs_rename_all): No debug printks.
* unionfs.h (get_nlinks): Don't sum up non-directories.
* subr.c (unionfs_refresh_hidden_dentry): Re-lookup a dentry, this
is needed on rename reverts because vfs_rename trashes the dentry
of the target.
* inode.c (unionfs_rename_all): Working revert.
2004-08-18 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c (unionfs_rename_all): New rename that handles more cases,
revert code doesn't work yet.
2004-08-18 Mohammad Nayyer Zubair <zubair@filer.fsl.cs.sunysb.edu>
* inode.c (rmdir_all): exit if error is not -EROFS and not -ENOTEMPTY
* inode.c (rmdir_all): exit from function and dont create whiteout
if vfs_rmdir returns error other than -EROFS
2004-08-17 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c (unionfs_unlink_all): Unlock the directory on error.
* inode.c (unionfs_setattr): Lock on all attribute changes, not just
some.
* inode.c (do_rename): Check renames based on index rather than
new_dentry which might not exist.
* Makefile: debugging symbols are very useful for Oops tracing
* unionfs.h (CUR_MAX_BRANCH): Removed CUR_MAX_BRANCH which was always
sbend + 1, and replaced with sbmax (that doesn't require a redundant
and possbly inconsistent field within the super-block).
* unionfs.h (dtopd): Converted from a macro to an inline function
so that we can do more checking of the private data that we are
returning.
* unionfs.h (dtohd_index) Added a udi_bcount field to the private data
so we would Oops rather than silently overflow array bounds.
* dentry.c: Recursively revalidate the parent (the ASSERT that was
checking this was mis-written). It turns out that our parent was not
always valid.
* file.c (unionfs_file_revalidate): Always reassign the read-ahead
values because the older file might have different values and llseek
will cause an assertion failure.
* inode.c (unionfs_lookup_backend): Treat revalidated negative and
positive dentries differently.
2004-08-16 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c: Use an fd_set instead of an integer for tracking successful
renames.
* branchman.c: Don't allow more than FD_SETSIZE (1024) branches.
* unionctl.c: Specific message for exceeding FD_SETSIZE.
2004-08-11 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c: Return ENAMETOOLONG when looking up ".wh.*"
* unionctl.c: Add ioctl.
* branchman.c: Don't allow branches without MAY_READ
* unionctl.c: Convert branch pathnames into index automatically.
* unionctl.c: Match the longest prefix of our path inside of
/proc/mounts instead of the path itself. This is required so that
remove doesn't need to open the root of the union.
* unionctl.c: Remove branch ioctl and list branch configuration.
2004-08-10 Mohammad Nayyer Zubair <zubair@filer.fsl.cs.sunysb.edu>
* file.c: added CAP_SYS_ADMIN checks before calling unionfs ioctls
* uniondbg.c: now contains debugging related ioctls
* unionctl.c: now contains ioctls to add, remove and set branch
permissions moved here
* uniondbg.c: ioctls to add, remove and set branch permissions
moved here
* fist_ioctl.c: remaining ioctls stay here
* subr.c: making sure copyupuid, copyupgid and copyupmode are all
specified when copyup option is set to mounter.
* inode.c: implemented unionfs_rename_first()
2004-08-09 Mohammad Nayyer Zubair <zubair@filer.fsl.cs.sunysb.edu>
* inode.c: more places where we should exit if get an error other than
-EROFS in unlink/rmdir and related functions.
* subr.c: exit if get an error other than -EROFS when
creating/deleting whiteouts
* inode.c: making sure that we create/mkdir/symlink/mknod to the
left only if the error returned is -EROFS, otherwise passup
* subr.c: use notify_change instead of directly modifying the inode
fields.
* subr.c: use notify_change instead of directly modifying the inode
fields.
* main.c: added copyupuid, copyupgid and copyupmode mount options.
These options will specify the mode, uid and gid of copied-up files.
copyup option should be set to mounter.
* subr.c: using the above mount time values for copied-up files.
* unionfs.h added these values in the unionfs super block.
2004-06-17 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c (unionfs_flush): Flush all branches (only makes a
difference for directories).
2004-08-03 Mohammad Nayyer Zubair <zubair@filer.fsl.cs.sunysb.edu>
* super.c: Implemented unionfs_show_options. Can now view unionfs
mount time options in /proc/mounts
* inode.c: using is_robranch_super instead of is_robranch in
create, mkdir, symlink, mknod operations, whenever we try to
remove whiteouts if they exist.
* main.c: while parsing options using strcmp wherever we can,
removed all magic numbers, copyup options are now preserve,
currentuser, mounter
* subr.c: when copying up the default mode should be original
owner (preserve)
2004-08-02 Mohammad Nayyer Zubair <zubair@filer.fsl.cs.sunysb.edu>
* main.c: unionfs mount time flag changed from being an integer
flag to several text options that will together make up the flag.
2004-05-17 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* branchman.c: Fixed off by one error when adding more than 8
branches.
2004-05-10 Charles P. Wright <cwright@polarbear.fsl.cs.sunysb.edu>
* main.c (unionfs_read_super): Error check to prevent oops on bad
mount-time options.
2004-04-21 Charles P. Wright <cwright@polarbear.fsl.cs.sunysb.edu>
* file.c: revalidate files when the are passed into our methods,
this allows copy-up of open files. Yeah snapshots.
* dentry.c: Should not use d_hash and d_compare because Unionfs is
in charge of the namespace, not the lower-level file systems.
* Unionfs now has split-view caches. If compiled with
-DSPLIT_VIEW_CACHES, then Unionfs supports duplicating the super
block structure and dynamically selecting the correct structure to
use when crossing into the unionfs mountpoint. Right now the
default behavior is that root has one view, and every other user
has another view.
If the super block is not duplicated then everything works as
before.
2004-04-20 Charles P. Wright <cwright@polarbear.fsl.cs.sunysb.edu>
* branchman.c: Super Duper works! An ioctl can let you create a
super block that is a copy of the original. When you stat the
mountpoint that super block is returned. Now to fix the reference
counting bugs associated with unmount. :)
2004-04-19 Charles P. Wright <cwright@arcticfox.foo>
* super.c (unionfs_select_super): return s_root for now
2004-03-15 Charles P. Wright <cwright@arcticfox.foo>
* dentry.c (unionfs_d_revalidate): Fix refcounts.
* inode.c (unionfs_inode_revalidate): Fix reference counting.
* inode revalidate "works" (e.g., no Oopses or other broken f/s
behavior), but has broken reference counting.
2004-03-14 Charles P. Wright <cwright@arcticfox.foo>
* main.c (unionfs_interpose): Changed neg_dent_flag to which was
true if we did *not* have a negative dentry to is_negative_dentry
which *is* true if we have a negative dentry. Fixed related
assert (which was ASSERT(1)).
* inode.c (unionfs_lookup): Read through and simplified lookup by
removing duplicated code or nasty if/else statements when if
continue would work(to the tune of 20%). Clarified comments as
well. Now instead of being a 248 line monster it is a 199 line
monster.
* UNIONFS-TODO: We still need to solve whiteouts (i.e., you can
sucessfully stat a whiteout in Unionfs). Note this is not
introduced by my changes.
2004-03-12 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* branchman.c (unionfs_ioctl_rdwrbranch): Read/write branch setting.
2004-03-11 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* branchman.c (unionfs_ioctl_addbranch): Refcount fix.
2004-03-04 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c (do_rename): Correctly check is_readonly.
* fist.h (print_exit_pointer): Print out pointer using %p and
don't convert using PTR_ERR if it is not IS_ERR.
* subr.c (unionfs_create_parent_dir): Return error as pointer
* subr.c (create_whiteout): Check branch before creating whiteouts.
* unionfs.h (VALID_MOUNT_FLAGS): Define valid mount flags in the
header, so main.c doesn't need to know all of them.
* doit.sh (FLAG): Default mode should be UNLINK_ALL, not
UNLINK_WHITEOUT.
* inode.c (unionfs_unlink): Unlink creates whiteout to the left.
2004-03-03 Charles P. Wright <cwright@polarbear.fsl.cs.sunysb.edu>
* inode.c (unionfs_create): Creation on a robranch will
cause the file to be created to the left.
* unionfs.h: More macros for checking if things are on read-only
branches.
* xattr.c: Separate xattrs from inode.c.
* ATTACH-TODO.txt: Unionfs doesn't attach.
* README.attach: Unionfs doesn't attach.
* mmap.c: Unionfs doesn't filter data.
* vm_area.c: No data filtering.
2004-03-02 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* main.c: Updated parsing code so that dirs can be specified as
b0=rw,b1,b2=ro,b3. Defaults to rw. Need to actually integrate
the permission checking code elsewhere.
2003-11-10 Harikesavan Pathangi Krishnan <hari@a-rh72i.fsl.cs.sunysb.edu>
* file.c (unionfs_readdir): Changed code to fix the NFS related bug.
2003-10-27 Harikesavan Pathangi Krishnan <hari@mooby.fsl.cs.sunysb.edu>
* subr.c (unionfs_copyup_dentry_len): This is a modified form of
unionfs_copyup_dentry() that takes in the length of file to be
copied up. The length is useful when the file size is changed in
the setattr.
2003-10-01 Puja Gupta <puja@t6.fsl.cs.sunysb.edu>, Jay, Mohammad.
* subr.c (unionfs_copyup_dentry): fixed copyup bug, update bstart, bend
on error on vfs_create.
2003-09-27 Puja Gupta <puja@a-rh8.fsl.cs.sunysb.edu>, Hari, Jay.
* inode.c (unionfs_rename_all): fixed to call rename and create
whiteout for test_rename script.
2003-09-26 Puja Gupta <puja@a-rh8.fsl.cs.sunysb.edu>, Zubair, Hari.
* subr.c (create_whiteout): removed unnecessary dput of hidden_dentry.
2003-09-26 Puja Gupta <puja@icon.fsl.cs.sunysb.edu>, Hari
* subr.c, inode.c, unionfs.h: Better function name and comments.
* inode.c (unionfs_rename_all): changed to create whiteouts
properly on error conditions.
(unionfs_rename_whiteout): initilize parent dentry.
2003-09-26 Harikesavan Pathangi Krishnan <hari@icon.fsl.cs.sunysb.edu>, Puja.
* print.c (fist_print_dentry): added print for d_parent, aligned.
* subr.c (create_whiteout_left_parent): Added function for
creating whiteout in a parent directory by a char * string.
(unionfs_create_parent_dir): initialize dtohd before checking and
changing the bstart and bend for new dentry.
(unionfs_copyup_dentry): removed extra dput, since fput internally
does that.
* inode.c (unionfs_rename_whiteout): fixed to support copyup for EROFS.
2003-09-24 Puja Gupta <puja@story.fsl.cs.sunysb.edu>, Hari, Jay.
* subr.c (unionfs_create_parent_dir): Fixed updating bstart for copyup.
2003-09-23 Puja Gupta <puja@idol.fsl.cs.sunysb.edu>, Hari, Jay.
* subr.c (unionfs_create_parent_dir): Updates bstart, bend, dputs
extra negative dentries.
2003-09-23 Puja Gupta <puja@story.fsl.cs.sunysb.edu>, Hari, Jay.
* subr.c (unionfs_create_parent_dir): Dput the previous negative
dentry.
* inode.c (unionfs_create, unionfs_mkdir, unionfs_mknod, unionfs_link)
(unionfs_symlink): Removed dgets and dputs to handle errors in
vfs functions. Now handled in unionfs_create_parent_dir.
(do_rename): removed dputs and dgets to balance with create_parent.
2003-09-22 Harikesavan Pathangi Krishnan <hari@t1.fsl.cs.sunysb.edu>, Mohammad.
* subr.c (unionfs_create_parent_dir): Fixed a bug related to
igrabbing lower inode.
2003-09-22 Akshat Aranya <aaranya@t6.fsl.cs.sunysb.edu>
* main.c (unionfs_parse_options): Fix some memory leaks in error
paths.
2003-09-22 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* main.c (unionfs_read_super): Fixed error path.
2003-09-22 Erez Zadok <ezk@ulkesh.fsl.cs.sunysb.edu>
* match-malloc.pl: document this script with a procedure telling
how to use malloc debugging. Use -DFIST_MALLOC_DEBUG from now on.
2003-09-22 Puja Gupta <puja@icon.fsl.cs.sunysb.edu>
* fist.h, main.c, subr.c: turned off MEMORY_DEBUG.
2003-09-22 Puja Gupta <puja@t1.fsl.cs.sunysb.edu>
* main.c (unionfs_read_super): Memory fix.
2003-09-22 Puja Gupta <puja@mooby.fsl.cs.sunysb.edu>
* inode.c, dentry.c, super.c: Memory Leak Checks.
2003-09-22 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
* subr.c: add transcation counter to malloc/free debugging.
* match-malloc.pl: perl script to parse log output from
KMALLOC/KFREE macros, and report leaks etc.
2003-09-21 Mohammad Nayyer Zubair <zubair@t1.fsl.cs.sunysb.edu>, Puja, Hari, Jay.
* inode.c (unionfs_lookup): changed the dput location of hidden
whiteout dentry in the code.
2003-09-22 Puja Gupta <puja@icon.fsl.cs.sunysb.edu>
* subr.c (check_empty): added list_del.
* inode.c (unionfs_lookup): kfree moved at out.
(unionfs_unlink_whiteout): added kfree.
2003-09-21 Mohammad Nayyer Zubair <zubair@t1.fsl.cs.sunysb.edu>, Puja, Hari, Jay
* subr.c (create_parent_dir()): added support for left to right
copy up. Could be used in unionfs_link()
2003-09-21 Puja Gupta <puja@icon.fsl.cs.sunysb.edu>, Jay, Hari, Mohammad.
* subr.c (check_whiteout): check for error on kmalloc.
(check_empty): moved kfree after 'out' label.
* main.c (unionfs_read_super): changed to dput superblock dentries on
error conditions.
* file.c (unionfs_filldir): check for error on kmalloc.
2003-09-21 Mohammad Nayyer Zubair <zubair@t1.fsl.cs.sunysb.edu>, Puja, Hari, Jay.
* inode.c (unionfs_link()): unlinking .wh.foo (if exists)
while creating link called foo
2003-09-21 Puja Gupta <pugupta@cs.sunysb.edu>, Hari, Jay, Mohammad.
* inode.c (unionfs_mkdir, unionfs_mknod): dget hidden_dentry if not
calling create_parent_dir.
* inode.c (unionfs_mkdir, unionfs_mknod): removed extra dget before
removing whiteout.
2003-09-21 Mohammad Nayyer Zubair <zubair@t1.fsl.cs.sunysb.edu>, Hari, Jay, Puja.
* inode.c (unionfs_symlink()): removed extra dget() in symlink
2003-09-21 Puja Gupta <pugupta@cs.sunysb.edu>
* inode.c, dentry.c, unionfs.h: variable declaration re-shuffled to
compile on local machine.
2003-09-21 Mohammad Nayyer Zubair <zubair@t1.fsl.cs.sunysb.edu>, Hari, Jay, Puja
* subr.c (create_dir_whs()): removed extra dget on hidden dentry
* file.c (unionfs_open()): calling branchput if get an error in
opening hidden dentry
2003-09-21 Puja Gupta <puja@icon.fsl.cs.sunysb.edu>, Jay, Hari, Mohammad.
* inode.c: removed extra bstart, and comments.
* file.c (unionfs_readdir): Added a bindex++ to {un,re}-reverted code.
Works now!! ;-)
2003-09-21 Mohammad Nayyer Zubair <zubair@t1.fsl.cs.sunysb.edu>, Hari, Jay, Puja.
* subr.c (create_whiteout_left()): synched reference counts for
hidden_dentry; added a dget for the hidden_dentry
2003-09-21 Puja Gupta <puja@t1.fsl.cs.sunysb.edu>, Jay.
* inode.c (unionfs_create): removed extra dget, dput for vfs_rename.
Removed extra dputs, d_drop on error.
2003-09-21 Puja Gupta <puja@icon.fsl.cs.sunysb.edu>
* subr.c (unionfs_create_parent_dir): removed extra dput on error
in lookup.
(create_whiteout_left): mode set to create whiteout.
(delete_whiteouts): removed dput on NULL hidden_dentry.
2003-09-20 Mohammad Nayyer Zubair <zubair@mooby.fsl.cs.sunysb.edu> Puja, Jay
* inode.c: removed all "dtohd_index(dentry, bindex) = NULL" references and any
extra dputs
* subr.c: modified code in troublesome create_whiteout_left() function.
Removed extra dgets on the parent and dputting the hidden dentry
2003-09-20 Puja Gupta <puja@icon.fsl.cs.sunysb.edu>
* subr.c: added branchput for branchgets.
* print.c (fist_checkinode): fixed the count print condition.
* inode.c (unionfs_unlink_whiteout): changes to dget, notify_change.
match dget and dput.
2003-09-20 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Makefile (tags): target for tags
* inode.c (unionfs_unlink_whiteout): Refcount fix.
2003-09-20 Puja Gupta <puja@icon.fsl.cs.sunysb.edu>
* file.c (unionfs_readdir): reverting back to file.c before changes
related to readdir_called flag. Was going into an infinite loop due
to some condition. The current version works fine.
* subr.c (create_dir_whs_filldir): replaced "return err" with
"goto out", which was causing an infinite loop.
(check_whiteout, delete_whiteouts): replaced 'ret' with err.
2003-09-19 Puja Gupta <puja@icon.fsl.cs.sunysb.edu>
* subr.c (create_dir_whs): added filldir_called flag.
2003-09-19 Puja Gupta <puja@idol.fsl.cs.sunysb.edu>, Jay, Hari, Mohammad.
* subr.c (check_empty): check if filldir is called or not.
2003-09-19 Harikesavan Pathangi Krishnan <hari@t1.fsl.cs.sunysb.edu>, Jay, Chip, Puja, Mohammad
* subr.c (check_empty): Added a flag field in the callback
structure that makes readdir call once again if all the contents
of the directory are not read.
2003-09-19 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c (unionfs_release): free resources on file close.
* file.c (unionfs_filldir): Print a warning on any duplicate, but
don't return -EIO.
* subr.c (create_whiteout_left): fix a refcount leak
2003-09-19 Mohammad Nayyer Zubair <zubair@mooby.fsl.cs.sunysb.edu>
* file.c (unionfs_filldir()): fixed the rm -Rf (-EIO, ENOTEMTPY
error) cases. return -EIO ONLY when get a 'foo' and 'foo' exists
in the same directory, which would indicate corruption in the file
system. Before were returning -EIO ALSO if filldir gets a
'.wh.foo' and 'foo', latter being in the linked list already
2003-09-17 Puja Gupta <puja@idol.fsl.cs.sunysb.edu>, Hari, Mohammed.
* Makefile: Changing back to old file.
* subr.c (create_whiteout_left): removed dput, hidden_dentry == NULL.
* inode.c (do_rename): If error, make hidden_dentry NULL.
(unionfs_rename_all): copyup file on err = -EROFS.
* unionfs.h: added copyup_dentry.
* subr.c (unionfs_copyup_dentry): added this function, called from
setattr.
(unionfs_copyup_file): modified, calls copyup_dentry internally. Added
checks before kfree.
* inode.c (unionfs_setattr): calls copyup when trying to setattr for a
RO branch.
* fist.h (FISTBUG): imported from ncryptfs.
2003-09-17 Harikesavan Pathangi Krishnan <hari@t1.fsl.cs.sunysb.edu>
* inode.c: Fixed the bug related to creation of whiteouts on the
leftmost branch when a directory on that branch is rmdir'ed.
2003-09-16 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* subr.c: fixed indentation for readdir actors
* inode.c (unionfs_rmdir): create_whiteout can just not do anything
* unionfs.h (itohi, dtohd): Reference count check before returning
to user space.
2003-09-16 Puja Gupta <puja@a-rh8.fsl.cs.sunysb.edu>, Hari, Mohammad.
* inode.c (unionfs_create): removed a dget, was giving a seg fault.
(unionfs_lookup): error check for lookup_one_len added.
(unionfs_rmdir_all): checking if rmdir failed on leftmost, and if it
had whiteouts, remove them, and call vfs_rmdir again, to create
whiteout.
2003-09-16 Mohammad Nayyer Zubair <zubair@t6.fsl.cs.sunysb.edu> Hari <hari@fsl.cs.sunysbe.du>
* main.c (unionfs_interpose()): removed unnecessary fist_prints()
2003-09-16 Mohammad Nayyer Zubair <zubair@t6.fsl.cs.sunysb.edu> Hari <hari@fsl.cs.sunysbe.du>
* print.c (fist_print_dentry() and fist_print_inode()): removed
the anding code when printing the mode of the inode. Was printing
a negative mode value.
2003-09-15 Puja Gupta <puja@a-rh8.fsl.cs.sunysb.edu>, Hari, Mohammed.
* subr.c: fput for copied up file not required.
* print.c: print level 9 changed to 8. Level 9 doesn't get printed.
* unionfs.h (IS_COPYUP_ERR, IS_WRITE_FLAG): Added.
* subr.c (unionfs_copyup_file): Checks added, replaced variables, fixed.
* inode.c (unionfs_permission): One code for files and directories.
Error bypassed for -EROFS, but not for leftmost branch.
* file.c (unionfs_open): Check added for RO partition, and call copyup.
2003-09-15 Mohammad Nayyer Zubair <zubair@t6.fsl.cs.sunysb.edu> Hari <hari@fsl.cs.sunysbe.du>
* inode.c (unionfs_mknod): done. removes whiteout if
present. format similar to unionfs_mkdir(). Tested.
2003-09-14 Puja Gupta <puja@idol.fsl.cs.sunysb.edu>
* inode.c (do_rename): Fixed parent directory for lookup of whiteout.
(unionfs_rename_whiteout): Added case for DELETE_WHITEOUT for rename.
(unionfs_rename): Check destination->inode before S_ISDIR.
2003-09-14 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c (unionfs_filldir): Remove a duplicate from the list if
filldir fails.
* dentry.c (unionfs_d_revalidate, unionfs_d_compare, unionfs_d_hash):
Turned into utility functions for printing to reduce volume of debug
output.
2003-09-14 Puja Gupta <puja@idol.fsl.cs.sunysb.edu>
* inode.c (unionfs_rename_all): fix for bindex counter.
(unionfs_rename_all): check if error not occured in bstart of
destination.
(unionfs_rename_all): whiteout is always create in the bstart of
source, not to go to left of it.
2003-09-14 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Detect EIO on single directories by doing duplicate elimination
routine.
2003-09-13 Puja Gupta <puja@t3.fsl.cs.sunysb.edu>, Jay.
* inode.c: added dput for hidden_dentry, whiteout_dentry that
are not used after lookup.
* subr.c: added dput for hidden_dentry, whiteout_dentry that
are not used after lookup.
2003-09-13 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* PASSERT is for pointers. ASSERT is for non-pointer conditions.
2003-09-12 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* main.c: Sanity checks on flag=.
* subr.c (create_whiteout_left): Balanced a dput w/ a dget.
* print.c: exit should be level 5, not 4. hidden_dentries/inodes
are level 9 instead of 8.
* Changed ASSERT to Oops when the pointer is poisoned.
* Changed ASSERT(foo != NULL) to ASSERT(foo)
* Default flag is 0x0.
2003-09-11 Puja Gupta <puja@idol.fsl.cs.sunysb.edu>, Hari, Zubair, Jay.
* inode.c (unionfs_create, unionfs_symlink): whiteouts truncated
to zero and ctime updated.
* unionfs.h: added flags COPYUP_OWNER, COPYUP_FS_MOUNTER,
redefined flags.
* inode.c: unlock parent added.
* file.c (unionfs_open): check for error and call copyup on EROFS.
* inode.c (unionfs_unlink): changed the function like rmdir. Used
rename instead of unlink, create for whiteouts.
(unionfs_mkdir): restructured code.
* unionfs.h (GLOBAL_ERR_PASSUP): removed DELETE_ERR_PASSUP.
GLOBAL_ERR_PASSUP indicates whether to pass error back or create
whiteouts/try again.
* inode.c (unionfs_create, unionfs_symlink, unionfs_link):
restructured changed *_ERR_PASSUP to GLOBAL_ERR_PASSUP.
* unionfs.h (GLOBAL_ERR_PASSUP): added, for all functions,
whether, on error, should passup or try to make up for error
encountered.
* inode.c (unionfs_symlink): updating bstart, bend for symlink
create. Restructured the code.
2003-09-11 Mohammad Nayyer Zubair <zubair@t6.fsl.cs.sunysb.edu>
* inode.c (unionfs_symlink): done. removes whiteout if
present. same format as in unionfs_create()
* inode.c (unionfs_link): creating destination path in source's
branch instead of vice versa
* inode.c (unionfs_rmdir_all): removed unneccessary d_drop()
call. unionfs_rmdir() calls it at the end
2003-09-10 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c (unionfs_rmdir): Split into several functions.
* subr.c (delete_whiteouts): Delete all whiteouts in
a given directory in a given branch.
* subr.c (check_empty): Check if a directory is empty.
2003-09-10 Puja Gupta <puja@idol.fsl.cs.sunysb.edu>, Hari.
* unionfs.h: unionfs_interpose now returns void.
* subr.c (unionfs_partial_lookup): removed extra dput.
unionfs_reinterpose now returns void.
* main.c (unionfs_reinterpose): is now a void function and igrab
was called twice for already existing hidden inode. Fixed.
* file.c (single_branch_filldir): removed fist_dprint printed
extra newline character on commandline during readdir.
* unionfs.h (COPYUP_CURRENT): removed multiple definition.
2003-09-09 Puja Gupta <puja@idol.fsl.cs.sunysb.edu>
* subr.c (unionfs_full_lookup): Removed this function, was similar
to unionfs_partial_lookup.
* inode.c (unionfs_unlink): added if-else for three different
options for unlink, and also for error handling (passup or
whiteout). Replaced unionfs_full_lookup with
unionfs_partial_lookup (Both functions were same, just change in
name). Added dget, dput at appropriate places.
* unionfs.h (DELETE_FIRST, DELETE_WHITEOUT, DELETE_ERR_PASSUP):
added, and removed all other unlink flags.
2003-09-09 Mohammad Nayyer Zubair <zubair@t6.fsl.cs.sunysb.edu> Hari <hari@fsl.cs.sunysb.edu>
* inode.c (unionfs_lookup): returning EIO for directory whiteout.
2003-09-02 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu> Hari <hari@fsl.cs.sunysb.edu>
* inode.c: mkdir and create revisted, restructured and tested
2003-09-08 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c (unionfs_write): Fixed positioning code.
2003-09-07 Puja Gupta <puja@idol.fsl.cs.sunysb.edu>
* inode.c (unionfs_create): added dget, get_parent, double_lock
and error check for vfs_rename of whiteouts. Added d_drop for any
negative dentry at the end of function.
(unionfs_mkdir): added error check for vfs_unlink of whiteouts,
unionfs_interpose, create_dir_whs. Removed multiple unlock_dir.
* subr.c (create_dir_whs_filldir, create_whiteout_left):
changed char name[PATH_MAX] to char *name.
* inode.c (unionfs_create, unionfs_lookup, unionfs_unlink)
(unionfs_mkdir): changed char name[PATH_MAX] to char *name.
(unionfs_rmdir): removed unused name, wh_name.
2003-09-06 Puja Gupta <puja@idol.fsl.cs.sunysb.edu>
* inode.c (unionfs_create): reverted back to the loop for create
from bstart to zeroth branch.
2003-09-02 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu>
* inode.c: file to file rename done.
* major items left: dir to dir rename
* minor items left: mknod, symlink
2003-09-05 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c (unionfs_filldir, single_branch_filldir): Removed memory
leak for debug output in filldirs.
(unionfs_readdir): Return -failure from filldir (previously our
filldir had no error propagation).
* ioctls via extended attributes works.
* branchman.c (unionfs_ioctl_delbranch): Don't let people delete
the last remaining branch. It would be cooler if we could, but
probably not worth all the effort to make the root dentry behave
properly when there is nothing underneath it.
* file.c: Removed branch management functions.
* inode.c): xattr functions.
* branchman.c: Branch management functions.
2003-09-03 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* super.c (unionfs_clear_inode): Fixed cleanup of stale inodes.
* fist.h (ASSERT2): Macro to print out caller when we fail.
* Changed ASSERT2's to ASSERT, since they weren't really being
used as an ASSERT2.
* unionfs.h (itohi, dtohd): Converted to a function, added an
ASSERT2 to make sure we don't underflow the array.
2003-09-02 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu>
* subr.c: removed the unnecessary vfs_rename() function call in
create_whiteout_left(). Doing vfs_create() directly.
* inode.c: fixes in lookup(). Started on unionfs_rename().
2003-09-01 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu>
* subr.c: added function int remove_whiteouts(dentry_t *dentry,
dentry_t *hidden_dentry, int bindex)
Called by unionfs_rmdir(). Does vfs_readdir() and then unlinks all
whiteouts entries in it.
2003-09-01 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Updated CUR_MAX_BRANCH and MOUNT_FLAG.
* dentry.c (unionfs_d_revalidate): Make negative dentries that
just turned negative stale.
* inode.c (unionfs_inode_revalidate): Make negative inodes stale.
* stale_inode.c: Functions to make a magic stale inode.
2003-09-01 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu>
* inode.c: unionfs_mkdir() done and works as per updated design.
Creating whiteout entries for all entires to the right. Details on
this are in the updated function_description.html file
* file.c: a separate filldir function for single branch directory.
Ignoring whiteout entries.
* subr.c: added a function: int create_whs_right(dentry_t *dentry,
int cur_index) Does a vfs_readdir on all directories starting from
cur_index + 1 and creates whiteout entries in cur_index (called in
unionfs_mkdir()). Details on this are in the updated
function_description.html file
preliminary cases are working as expected
Left: rename, mknod, symlink.
2003-09-01 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c: Add branch ioctl and trimmed unionfs_dir_fops.
* fist.h: Structure for add branch ioctl.
* fist_ioctl.c: Add branch and cleaner branchcount ioctl.
2003-08-31 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* dentry.c (unionfs_d_revalidate): Do revalidation of dentries,
we now can remove the leftmost branch and expose old contents.
2003-08-27 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu>
* inode.c: unionfs_unlink() implemented as per new design specs
(ignoring intermiate directories for now)
* subr.c: added create_whiteout_left(dentry, index) function:
creates a whiteout in index, on error it proceeds to the left.
* file.c: in fill_dir() ignoring whiteout entries
* Left: mkdir, mknod, symlink, rmdir, rename
2003-08-27 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* Branch removal sort of works.
2003-08-27 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu>
* inode.c: unionfs_create() implemented as per new design specs.
If found a .wh.foo entry, vfs_rename it to foo.
* inode.c: unionfs_lookup() implemented as per new design specs.
If found a whiteout entry, just stop lookup
* inode.c: unionfs_link() implemented as per new design specs
* inode.c: unionfs_setattr() implemented as per new design specs
* inode.c: unionfs_permission() implemented as per new design specs.
* file.c: calling unionfs_copyup_file() in unionfs_open() if open
with specified flags fails with the current underlying file
* subr.c: fixes in unionfs_copyup_file()
* unionfs.h: modified mount time flags
* Still left (according to new specs): mkdir, symlink, mknod,
unlink, rmdir, rename hard.
2003-08-26 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* inode.c (unionfs_inode_revalidate): Refresh inode from lower level.
* fist_ioctl.c: Increment super generation number.
* file.c (unionfs_ioctl_incgen): Increment super generation number.
2003-08-20 Charles P. Wright <cwright@fsl.cs.sunysb.edu>
* file.c: Branch reference counters updated on open/close. Need
to figure out how do to update them when a unionfs directory
becomes the cwd of a process.
* doit.sh: Source doitopts or doitopts.`uname -n` so different
developers can have different setups, w/o changing CVS.
* unionfs.h: Added generation number to super block, inode, and dentries.
* attach.c: Not used.
2003-08-13 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu>
* subr.c: some fixes in unionfs_copyup_file() (untested yet)
* file.c: calling unionfs_copyup_file() if write() fails on the
leftmost file. Failure could result because of read-only
permissions on the file so probably should do copy up only if
branch is mounted RO.
* unionfs.h: modified definition for unionfs_copyup_file()
2003-08-13 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu>
* subr.c: added function: unionfs_copyup_file(inode_t *dir,
dentry_t *dentry, int oldbindex, int newbindex) first does
recursive directory creation, then does vfs_create() and then
reads PAGE_SIZE bytes from old file to new file
* subr.c, inode.c: moved useful functions:
unionfs_create_parent_dir() and unionfs_partial_lookup() to subr.c
from inode.c
* unionfs.h: definition for unionfs_copyup_file
* Makefile: added subr.o to the list of OBJS
2003-08-13 Puja Gupta <puja@idol.fsl.cs.sunysb.edu>
* unionfs.h: added definition for unionfs_create_whiteout.
2003-08-12 Puja Gupta <puja@mooby.fsl.cs.sunysb.edu>
* inode.c: reverting back to old copy without changes to rename.
2003-08-04 Puja Gupta <pugupta@cs.sunysb.edu>
* unionfs.h (UNLINK_WHITEOUT, UNLINK_ALL_FIRST, UNLINK_ERR): New flags
for handling various unlink options.
* main.c (unionfs_parse_options): fixed check for getting mount flags.
* inode.c (unionfs_unlink): added unlink for whiteout. If flag is set
for UNLINK_WHITEOUT, try to create whiteout in branches to left, create
recursive subdirectories. Also added check for various flags for
unlink_first or unlink_all, and how to handle error on unlink.
(unionfs_create_parent_dir): check in for loop fixed.
2003-08-04 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu>
* file.c: readdir is working fine with the hashtable in the private
data of unionfs file.
diff -ru on gcc tarball is successful
* inode.c: implemented option 2 of link(), recursively creating source
path in destination branch when branches are different
* unionfs.h: added two mount time flags
LINK_EXDEV: just return -EXDEV when dentries are on different branches
LINK_RECURSIVE: recursively create source path in target branch
2003-07-31 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu>
* file.c: readdir/filldir's linked list converted into a hashtable
of size HASHTABLE_SIZE Duplicate elimation is working. Still to
test the gcc tarball.
* unionfs.h: converted dir_list list head to an array of list
heads of size HASHTABLE_SIZE
2003-07-30 Puja Gupta <pugupta@cs.sunysb.edu>
* unionfs.h: changed to new flag, CREATE_RW_ERR, UNLINK_WHITEOUT,
UNLINK_ERR. Function definition for unionfs_partial_lookup.
* inode.c (unionfs_partial_lookup): added, called from
unlink. Looks up the remaining files that were not looked up in
unionfs_lookup.
(unionfs_unlink): code now transferred to unionfs_partial_lookup.
(unionfs_create): flag name is CREATE_RW_ERR.
* inode.c (unionfs_create): changed to new flag values.
* unionfs.h (IS_SET): changed flags to be exclusive. Also, changed
IS_SET to work on place value of bit.
2003-07-27 Puja Gupta <pugupta@cs.sunysb.edu>
* file.c (unionfs_open): removed ftohd_index(file, bindex) = NULL.
unionfs_getdents_callback now has file_t *.
(unionfs_filldir, unionfs_readdir): changed the global list_head
for duplicate elimination to have a list_head in private data of
file. So, the list of name, namelen is stored in this new
list_head, and compared against this.
* unionfs.h: added struct filldir_node to private data of file.
Thus, every file has unique and seperate list for readdir.
* doit.sh: "flag=" instead of "flags=".
2003-07-28 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu>
* inode.c: unionfs_link's option 1 done. Return -EXDEV if old and
new dentries are in different branches / starting option 2: if
different branches, creating destination path in the source branch
* unionfs.h: added a simple function which returns the sum of all
the underlying inodes' nlink value
* inode.c: calling the above function wherever nlinks value was
being set
2003-07-24 Puja Gupta <puja@t2.fsl.cs.sunysb.edu>
* unionfs.h: #defines for MOUNT_FLAG, CREATE_PASSUP,
CREATE_RW_ERR_PASSUP, CREATE_TRY_LEFT and IS_SET.
* main.c (unionfs_parse_options): parse the mount time flag and
initialize it.
* inode.c (unionfs_create): added handling of partial errors to
handle various cases: 1) Try to Left (default), 2) PassUp, 3) If
EPERM on RW branch, PassUp.
* doit.sh: changed mount options to include "flag=".
2003-07-24 Puja Gupta <pugupta@cs.sunysb.edu>
* inode.c (unionfs_setattr): added check for NULL hidden dentry.
(unionfs_inode_revalidate): added ASSERT2 for inode.
2003-07-24 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu>
* file.c: in unionfs_open, now only opening leftmost file instead
of opening all of the hidden files. Opening all directories
though.
* inode.c: setattr function done. Assigning 'correct' value to the
n_links variable in the unionfs inode. In inode_revalidate
function assigning 'correct' value to the n_links variable in the
unionfs inode.
* main.c: just moved sum_nlinks variable to the beginning of the
interpose function. diff -ru on a randomly distributed
(recursive) gcc tarball is failing. Some duplicate files are
being listed. 'ls' on the directory containing above duplicate
files also lists the files twice. Files have same unionfs inode.
Checking out whats happening.
2003-07-22 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu>
* main.c: in interpose() added lines which compute the sum of the
nlinks of the underlying inodes and assigns this sum to the
unionfs inode.
* inode.c: in permission() added check for a null hidden inode
2003-07-22 Puja Gupta <pugupta@cs.sunysb.edu>
* unionfs.h: init_file_array is now init_ftohf_ptr,
init_inode_array is now init_itohi_ptr, init_sb_array is now
init_stohs_ptr, added init_stohiddenmnt_ptr, init_dentry_info,
init_dentry_array is now init_dtohd_ptr. All this makes sure that
all allocated memory is initialized to zero before its being used.
* super.c (unionfs_read_inode): init_inode_array is now init_itohi_ptr.
* main.c (unionfs_parse_options): init_priv_inode is now
init_dentry_info.
(unionfs_parse_options): memset, init_stohs_ptr, init_stohiddenmnt_ptr
added for initialize memory allocated to NULL.
(unionfs_read_super): init_dtohd_ptr added to initialize to NULL.
* inode.c (unionfs_lookup): init_dentry_array is now init_dtohd_ptr.
* file.c (unionfs_open): added init_ftohf_ptr, setting underlying
file pointer to NULL.
2003-07-21 Puja Gupta <pugupta@cs.sunysb.edu>
* inode.c (unionfs_create): get rid of the hidden dentry that lead
to an unsuccessful attempt to create. Update bstart, bend
accordingly.
(unionfs_create_parent_dir): added "count--" for proper pointer
position. Updated private data, bstart for the dentry and inode of
intermediate directories created. Also, updated bend for the
negative dentry returned from this function to create.
* main.c (unionfs_interpose): removed comments and extra line
spaces.
2003-07-20 Puja Gupta <puja@idol.fsl.cs.sunysb.edu>
* unionfs.h (MAX_DIR_CREATE): added MAX_DIR_CREATE for the number of
directories allowed to be created in recursive subdir creation.
Should be dynamic.
* inode.c (unionfs_create): changed to handle partial error by
recursively creating directory to left branches.
(unionfs_create_parent_dir): added this function, it creates
hidden directory path for a given parent inode and dentry in
specified branch. (Still to test)
2003-07-15 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu>
* inode.c <unionfs_lookup>: Found a bug while mounting unionfs on
a randomly distributed (recursive) am-utils tarball on 5 branches.
Basically we were not memsetting the array of pointers to hidden
objects after kmallocing a CUR_MAX_BRANCH number of pointers for
dentry, inode, file and sb. They were assumed to be NULL in
lookup and hence were not explicitly set to NULL in the array when
requireed.
* unionfs.h: Added macros which initialize hidden arrays to NULL
2003-07-15 Puja Gupta <puja@mooby.fsl.cs.sunysb.edu>
* inode.c (unionfs_lookup): added few debug statements.
(unionfs_unlink): Since lookup for file had just the leftmost
entry, unlink now internally calls lookup for all remaining
branches. And the current policy for unlink is, unlink
all. (Tested).
* unionfs.h: added definition for unionfs_reinterpose.
* main.c (unionfs_reinterpose): This new function takes a dentry
with leftmost hidden inode interposed, and reinterposes the newly
lookedup hidden inodes in remaining branches. Called from
unionfs_unlink.
* mount_tarball.sh, mount_tarball_random.sh: These scripts are now
moved to ../tools directory.
2003-07-13 Puja Gupta <puja@mooby.fsl.cs.sunysb.edu>
* inode.c (unionfs_lookup): fixed initialization of negative dentry.
* print.c (fist_print_inode), (fist_print_file),(fist_print_dentry),
(fist_print_sb): made more readable, pointers now printed with %p.
2003-07-10 Puja Gupta <puja@idol.fsl.cs.sunysb.edu>
* super.c (unionfs_statfs): check for duplicate superblock data being
added.
(unionfs_umount_begin): check for NULL hidden_sb, hidden_sb->s_op.
2003-07-10 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu>
* print.c: fist_print_inode(): prints underlying inodes if any.
fist_print_dentry(): prints underlying dentries if any.
fist_print_files(): prints underlying files if any.
fist_print_superblock(): prints underlying sbs if any.
2003-07-10 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu>
* print.c: improved the formatting of printing inode, dentry and
sb
* main.c, inode.c removed unneccessary lines printing debugging
info in interpose()
2003-07-13 Mohammad Nayyer Zubair <mzubair@ic.sunysb.edu>
* file.c inode.c: removed debugging info lines
* created mount_tarball.sh. right now, distributes an equal
number of files/dirs among N branches tar-ing am-utils
through unionfs mount point gives same package buildall
through mount point gives same structure/files
|