Commit c71be2d4 authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent f34ea31d
digraph { digraph {
subgraph {
rank=same;
ordering=in;
wcfs [label="wcfs"]
invProto [label="open/invalidation\nprotocol"]
client [label="client"]
wcfs -> invProto;
invProto -> client [dir=back]; // XXX = invProto <- client
}
// wcfs -> wcfs_simple; // wcfs -> wcfs_simple;
// wcfs -> Sinvtree; // wcfs -> Sinvtree;
// wcfs -> δR; // wcfs -> δR;
...@@ -45,9 +57,7 @@ digraph { ...@@ -45,9 +57,7 @@ digraph {
// ZODB_read -> ogorek_persref; // ZODB_read -> ogorek_persref;
wcfs [label="wcfs"]
// wcfs_simple [label="wcfs no\ninvalidations", style=filled fillcolor=grey95] // wcfs_simple [label="wcfs no\ninvalidations", style=filled fillcolor=grey95]
client [label="client"]
// wcfs_spawn [label="spawn wcfs", style=filled fillcolor=lightyellow] // wcfs_spawn [label="spawn wcfs", style=filled fillcolor=lightyellow]
nowcfs [label="!wcfs mode"] nowcfs [label="!wcfs mode"]
......
...@@ -4,245 +4,264 @@ ...@@ -4,245 +4,264 @@
<!-- Generated by graphviz version 2.40.1 (20161225.0304) <!-- Generated by graphviz version 2.40.1 (20161225.0304)
--> -->
<!-- Title: %3 Pages: 1 --> <!-- Title: %3 Pages: 1 -->
<svg width="1321pt" height="367pt" <svg width="1290pt" height="385pt"
viewBox="0.00 0.00 1321.46 367.48" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> viewBox="0.00 0.00 1290.46 385.22" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 363.4802)"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 381.2203)">
<title>%3</title> <title>%3</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-363.4802 1317.4565,-363.4802 1317.4565,4 -4,4"/> <polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-381.2203 1286.4565,-381.2203 1286.4565,4 -4,4"/>
<!-- wcfs --> <!-- wcfs -->
<g id="node1" class="node"> <g id="node1" class="node">
<title>wcfs</title> <title>wcfs</title>
<ellipse fill="none" stroke="#000000" cx="447.8112" cy="-341.4802" rx="27.0966" ry="18"/> <ellipse fill="none" stroke="#000000" cx="595.8112" cy="-350.3503" rx="27.0966" ry="18"/>
<text text-anchor="middle" x="447.8112" y="-337.7802" font-family="Times,serif" font-size="14.00" fill="#000000">wcfs</text> <text text-anchor="middle" x="595.8112" y="-346.6503" font-family="Times,serif" font-size="14.00" fill="#000000">wcfs</text>
</g> </g>
<!-- autoexit --> <!-- invProto -->
<g id="node2" class="node"> <g id="node2" class="node">
<title>invProto</title>
<ellipse fill="none" stroke="#000000" cx="801.8112" cy="-350.3503" rx="78.4777" ry="26.7407"/>
<text text-anchor="middle" x="801.8112" y="-354.1503" font-family="Times,serif" font-size="14.00" fill="#000000">open/invalidation</text>
<text text-anchor="middle" x="801.8112" y="-339.1503" font-family="Times,serif" font-size="14.00" fill="#000000">protocol</text>
</g>
<!-- wcfs&#45;&gt;invProto -->
<g id="edge1" class="edge">
<title>wcfs&#45;&gt;invProto</title>
<path fill="none" stroke="#000000" d="M623.1706,-350.3503C653.1593,-350.3503 683.1481,-350.3503 713.1369,-350.3503"/>
<polygon fill="#000000" stroke="#000000" points="713.307,-353.8504 723.307,-350.3503 713.307,-346.8504 713.307,-353.8504"/>
</g>
<!-- autoexit -->
<g id="node4" class="node">
<title>autoexit</title> <title>autoexit</title>
<ellipse fill="none" stroke="#000000" cx="287.8112" cy="-260.6102" rx="52.1524" ry="26.7407"/> <ellipse fill="none" stroke="#000000" cx="363.8112" cy="-260.6102" rx="52.1524" ry="26.7407"/>
<text text-anchor="middle" x="287.8112" y="-264.4102" font-family="Times,serif" font-size="14.00" fill="#000000">autoexit</text> <text text-anchor="middle" x="363.8112" y="-264.4102" font-family="Times,serif" font-size="14.00" fill="#000000">autoexit</text>
<text text-anchor="middle" x="287.8112" y="-249.4102" font-family="Times,serif" font-size="14.00" fill="#000000">if !activity</text> <text text-anchor="middle" x="363.8112" y="-249.4102" font-family="Times,serif" font-size="14.00" fill="#000000">if !activity</text>
</g> </g>
<!-- wcfs&#45;&gt;autoexit --> <!-- wcfs&#45;&gt;autoexit -->
<g id="edge1" class="edge"> <g id="edge3" class="edge">
<title>wcfs&#45;&gt;autoexit</title> <title>wcfs&#45;&gt;autoexit</title>
<path fill="none" stroke="#000000" d="M425.8993,-330.4052C402.4756,-318.5659 364.6367,-299.4407 334.487,-284.2019"/> <path fill="none" stroke="#000000" d="M571.5583,-341.972C538.2492,-330.3431 476.5811,-308.3754 424.8112,-287.4802 420.8876,-285.8966 416.8405,-284.2173 412.7852,-282.5018"/>
<polygon fill="#000000" stroke="#000000" points="335.9051,-280.997 325.4015,-279.6097 332.7474,-287.2444 335.9051,-280.997"/> <polygon fill="#000000" stroke="#000000" points="413.9322,-279.1855 403.3621,-278.4616 411.1737,-285.6191 413.9322,-279.1855"/>
</g> </g>
<!-- wcfsInvProcess --> <!-- wcfsInvProcess -->
<g id="node3" class="node"> <g id="node5" class="node">
<title>wcfsInvProcess</title> <title>wcfsInvProcess</title>
<ellipse fill="none" stroke="#000000" cx="447.8112" cy="-260.6102" rx="89.6056" ry="26.7407"/> <ellipse fill="none" stroke="#000000" cx="523.8112" cy="-260.6102" rx="89.6056" ry="26.7407"/>
<text text-anchor="middle" x="447.8112" y="-264.4102" font-family="Times,serif" font-size="14.00" fill="#000000">process</text> <text text-anchor="middle" x="523.8112" y="-264.4102" font-family="Times,serif" font-size="14.00" fill="#000000">process</text>
<text text-anchor="middle" x="447.8112" y="-249.4102" font-family="Times,serif" font-size="14.00" fill="#000000">ZODB invalidations</text> <text text-anchor="middle" x="523.8112" y="-249.4102" font-family="Times,serif" font-size="14.00" fill="#000000">ZODB invalidations</text>
</g> </g>
<!-- wcfs&#45;&gt;wcfsInvProcess --> <!-- wcfs&#45;&gt;wcfsInvProcess -->
<g id="edge2" class="edge"> <g id="edge4" class="edge">
<title>wcfs&#45;&gt;wcfsInvProcess</title> <title>wcfs&#45;&gt;wcfsInvProcess</title>
<path fill="none" stroke="#000000" d="M447.8112,-323.1296C447.8112,-315.5597 447.8112,-306.5002 447.8112,-297.6583"/> <path fill="none" stroke="#000000" d="M582.939,-334.3066C574.2299,-323.4516 562.3891,-308.6933 551.5908,-295.2344"/>
<polygon fill="#000000" stroke="#000000" points="451.3113,-297.4808 447.8112,-287.4808 444.3113,-297.4808 451.3113,-297.4808"/> <polygon fill="#000000" stroke="#000000" points="554.0273,-292.6783 545.0393,-287.0687 548.5674,-297.0589 554.0273,-292.6783"/>
</g> </g>
<!-- wcfsRead --> <!-- wcfsRead -->
<g id="node4" class="node"> <g id="node6" class="node">
<title>wcfsRead</title> <title>wcfsRead</title>
<ellipse fill="none" stroke="#000000" cx="863.8112" cy="-260.6102" rx="47.3916" ry="18"/> <ellipse fill="none" stroke="#000000" cx="833.8112" cy="-260.6102" rx="47.3916" ry="18"/>
<text text-anchor="middle" x="863.8112" y="-256.9102" font-family="Times,serif" font-size="14.00" fill="#000000">read(#blk)</text> <text text-anchor="middle" x="833.8112" y="-256.9102" font-family="Times,serif" font-size="14.00" fill="#000000">read(#blk)</text>
</g> </g>
<!-- wcfs&#45;&gt;wcfsRead --> <!-- wcfs&#45;&gt;wcfsRead -->
<g id="edge3" class="edge"> <g id="edge5" class="edge">
<title>wcfs&#45;&gt;wcfsRead</title> <title>wcfs&#45;&gt;wcfsRead</title>
<path fill="none" stroke="#000000" d="M474.1494,-336.3601C541.6501,-323.238 721.8143,-288.2143 811.5369,-270.7722"/> <path fill="none" stroke="#000000" d="M619.9416,-341.2517C659.9371,-326.171 740.5048,-295.7922 790.532,-276.929"/>
<polygon fill="#000000" stroke="#000000" points="812.3476,-274.1803 821.4959,-268.8362 811.0117,-267.3089 812.3476,-274.1803"/> <polygon fill="#000000" stroke="#000000" points="791.9871,-280.121 800.1092,-273.3178 789.5173,-273.5711 791.9871,-280.121"/>
</g>
<!-- client -->
<g id="node3" class="node">
<title>client</title>
<ellipse fill="none" stroke="#000000" cx="969.8112" cy="-350.3503" rx="30.5947" ry="18"/>
<text text-anchor="middle" x="969.8112" y="-346.6503" font-family="Times,serif" font-size="14.00" fill="#000000">client</text>
</g>
<!-- invProto&#45;&gt;client -->
<g id="edge2" class="edge">
<title>invProto&#45;&gt;client</title>
<path fill="none" stroke="#000000" d="M890.628,-350.3503C906.7958,-350.3503 922.9636,-350.3503 939.1315,-350.3503"/>
<polygon fill="#000000" stroke="#000000" points="890.5612,-346.8504 880.5612,-350.3503 890.5611,-353.8504 890.5612,-346.8504"/>
</g>
<!-- client&#45;&gt;wcfsRead -->
<g id="edge18" class="edge">
<title>client&#45;&gt;wcfsRead</title>
<path fill="none" stroke="#000000" d="M949.4506,-336.9153C927.3478,-322.3307 891.7503,-298.8415 865.8833,-281.7731"/>
<polygon fill="#000000" stroke="#000000" points="867.7919,-278.8392 857.5176,-276.2529 863.9366,-284.6819 867.7919,-278.8392"/>
</g>
<!-- mappingRegister -->
<g id="node13" class="node">
<title>mappingRegister</title>
<ellipse fill="none" stroke="#000000" cx="1000.8112" cy="-170.8701" rx="65.1077" ry="26.7407"/>
<text text-anchor="middle" x="1000.8112" y="-174.6701" font-family="Times,serif" font-size="14.00" fill="#000000">mmappings:</text>
<text text-anchor="middle" x="1000.8112" y="-159.6701" font-family="Times,serif" font-size="14.00" fill="#000000">register/maint</text>
</g>
<!-- client&#45;&gt;mappingRegister -->
<g id="edge19" class="edge">
<title>client&#45;&gt;mappingRegister</title>
<path fill="none" stroke="#000000" d="M972.621,-332.1459C976.2019,-309.1786 982.6665,-268.4812 988.8112,-233.7401 990.2972,-225.3386 991.9712,-216.3212 993.5869,-207.8132"/>
<polygon fill="#000000" stroke="#000000" points="997.0681,-208.2434 995.5122,-197.7635 990.1931,-206.9263 997.0681,-208.2434"/>
</g>
<!-- clientInvHandle -->
<g id="node18" class="node">
<title>clientInvHandle</title>
<ellipse fill="none" stroke="#000000" cx="1078.8112" cy="-260.6102" rx="80.7205" ry="26.7407"/>
<text text-anchor="middle" x="1078.8112" y="-264.4102" font-family="Times,serif" font-size="14.00" fill="#000000">process</text>
<text text-anchor="middle" x="1078.8112" y="-249.4102" font-family="Times,serif" font-size="14.00" fill="#000000">#blk invalidations</text>
</g>
<!-- client&#45;&gt;clientInvHandle -->
<g id="edge20" class="edge">
<title>client&#45;&gt;clientInvHandle</title>
<path fill="none" stroke="#000000" d="M987.8103,-335.5315C1002.0729,-323.7891 1022.5081,-306.9648 1040.4013,-292.2332"/>
<polygon fill="#000000" stroke="#000000" points="1042.9168,-294.6957 1048.4124,-285.6376 1038.4676,-289.2916 1042.9168,-294.6957"/>
</g>
<!-- nowcfs -->
<g id="node19" class="node">
<title>nowcfs</title>
<ellipse fill="none" stroke="#000000" cx="1229.8112" cy="-260.6102" rx="52.7911" ry="18"/>
<text text-anchor="middle" x="1229.8112" y="-256.9102" font-family="Times,serif" font-size="14.00" fill="#000000">!wcfs mode</text>
</g>
<!-- client&#45;&gt;nowcfs -->
<g id="edge21" class="edge">
<title>client&#45;&gt;nowcfs</title>
<path fill="none" stroke="#000000" d="M997.4952,-342.6396C1036.2362,-331.616 1108.6328,-310.1634 1168.8112,-287.4802 1175.359,-285.0121 1182.217,-282.2108 1188.8732,-279.3714"/>
<polygon fill="#000000" stroke="#000000" points="1190.6473,-282.4166 1198.4215,-275.2185 1187.8553,-275.9975 1190.6473,-282.4166"/>
</g> </g>
<!-- ZODB_go_inv --> <!-- ZODB_go_inv -->
<g id="node5" class="node"> <g id="node7" class="node">
<title>ZODB_go_inv</title> <title>ZODB_go_inv</title>
<ellipse fill="none" stroke="#000000" cx="60.8112" cy="-170.8701" rx="60.623" ry="26.7407"/> <ellipse fill="none" stroke="#000000" cx="60.8112" cy="-170.8701" rx="60.623" ry="26.7407"/>
<text text-anchor="middle" x="60.8112" y="-174.6701" font-family="Times,serif" font-size="14.00" fill="#000000">ZODB/go</text> <text text-anchor="middle" x="60.8112" y="-174.6701" font-family="Times,serif" font-size="14.00" fill="#000000">ZODB/go</text>
<text text-anchor="middle" x="60.8112" y="-159.6701" font-family="Times,serif" font-size="14.00" fill="#000000">invalidations</text> <text text-anchor="middle" x="60.8112" y="-159.6701" font-family="Times,serif" font-size="14.00" fill="#000000">invalidations</text>
</g> </g>
<!-- wcfsInvProcess&#45;&gt;ZODB_go_inv --> <!-- wcfsInvProcess&#45;&gt;ZODB_go_inv -->
<g id="edge4" class="edge"> <g id="edge6" class="edge">
<title>wcfsInvProcess&#45;&gt;ZODB_go_inv</title> <title>wcfsInvProcess&#45;&gt;ZODB_go_inv</title>
<path fill="none" stroke="#000000" d="M382.8073,-241.9601C371.5207,-239.011 359.8613,-236.1456 348.8112,-233.7401 252.8573,-212.852 225.5821,-223.4682 130.8112,-197.7401 125.5506,-196.312 120.138,-194.6321 114.7639,-192.8211"/> <path fill="none" stroke="#000000" d="M459.6883,-241.7734C448.145,-238.7929 436.1713,-235.9654 424.8112,-233.7401 295.6238,-208.4342 258.5488,-229.5659 130.8112,-197.7401 125.4429,-196.4026 119.9278,-194.7686 114.4625,-192.9735"/>
<polygon fill="#000000" stroke="#000000" points="115.7682,-189.4641 105.1734,-189.4456 113.4442,-196.0671 115.7682,-189.4641"/> <polygon fill="#000000" stroke="#000000" points="115.3162,-189.5652 104.7214,-189.5974 113.0239,-196.1792 115.3162,-189.5652"/>
</g> </g>
<!-- zconnCacheGet --> <!-- zconnCacheGet -->
<g id="node6" class="node"> <g id="node8" class="node">
<title>zconnCacheGet</title> <title>zconnCacheGet</title>
<ellipse fill="none" stroke="#000000" cx="210.8112" cy="-170.8701" rx="71.4873" ry="18"/> <ellipse fill="none" stroke="#000000" cx="210.8112" cy="-170.8701" rx="71.4873" ry="18"/>
<text text-anchor="middle" x="210.8112" y="-167.1701" font-family="Times,serif" font-size="14.00" fill="#000000">zconn.Cache.Get</text> <text text-anchor="middle" x="210.8112" y="-167.1701" font-family="Times,serif" font-size="14.00" fill="#000000">zconn.Cache.Get</text>
</g> </g>
<!-- wcfsInvProcess&#45;&gt;zconnCacheGet --> <!-- wcfsInvProcess&#45;&gt;zconnCacheGet -->
<g id="edge5" class="edge"> <g id="edge7" class="edge">
<title>wcfsInvProcess&#45;&gt;zconnCacheGet</title> <title>wcfsInvProcess&#45;&gt;zconnCacheGet</title>
<path fill="none" stroke="#000000" d="M391.9456,-239.4567C351.9531,-224.3135 298.6039,-204.1128 260.174,-189.5613"/> <path fill="none" stroke="#000000" d="M457.2468,-242.5369C446.406,-239.5954 435.2965,-236.5821 424.8112,-233.7401 365.7056,-217.7198 350.4515,-215.3877 291.8112,-197.7401 282.341,-194.8901 272.3025,-191.6995 262.6358,-188.5398"/>
<polygon fill="#000000" stroke="#000000" points="261.3337,-186.258 250.7423,-185.99 258.8549,-192.8044 261.3337,-186.258"/> <polygon fill="#000000" stroke="#000000" points="263.7211,-185.2123 253.128,-185.404 261.5285,-191.8601 263.7211,-185.2123"/>
</g> </g>
<!-- zobj2file --> <!-- zobj2file -->
<g id="node7" class="node"> <g id="node9" class="node">
<title>zobj2file</title> <title>zobj2file</title>
<ellipse fill="none" stroke="#000000" cx="370.8112" cy="-170.8701" rx="70.3881" ry="18"/> <ellipse fill="none" stroke="#000000" cx="370.8112" cy="-170.8701" rx="70.3881" ry="18"/>
<text text-anchor="middle" x="370.8112" y="-167.1701" font-family="Times,serif" font-size="14.00" fill="#000000">Z* → file/[]#blk</text> <text text-anchor="middle" x="370.8112" y="-167.1701" font-family="Times,serif" font-size="14.00" fill="#000000">Z* → file/[]#blk</text>
</g> </g>
<!-- wcfsInvProcess&#45;&gt;zobj2file --> <!-- wcfsInvProcess&#45;&gt;zobj2file -->
<g id="edge6" class="edge"> <g id="edge8" class="edge">
<title>wcfsInvProcess&#45;&gt;zobj2file</title> <title>wcfsInvProcess&#45;&gt;zobj2file</title>
<path fill="none" stroke="#000000" d="M425.1251,-234.1706C414.8887,-222.2405 402.847,-208.2064 392.7065,-196.3881"/> <path fill="none" stroke="#000000" d="M482.81,-236.5615C459.5232,-222.9029 430.5977,-205.937 407.9761,-192.6686"/>
<polygon fill="#000000" stroke="#000000" points="395.2035,-193.9233 386.0354,-188.6132 389.891,-198.4816 395.2035,-193.9233"/> <polygon fill="#000000" stroke="#000000" points="409.7252,-189.6369 399.3286,-187.5966 406.1836,-195.675 409.7252,-189.6369"/>
</g> </g>
<!-- δFtail --> <!-- δFtail -->
<g id="node8" class="node"> <g id="node10" class="node">
<title>δFtail</title> <title>δFtail</title>
<ellipse fill="none" stroke="#000000" cx="638.8112" cy="-170.8701" rx="31.6951" ry="18"/> <ellipse fill="none" stroke="#000000" cx="638.8112" cy="-170.8701" rx="31.6951" ry="18"/>
<text text-anchor="middle" x="638.8112" y="-167.1701" font-family="Times,serif" font-size="14.00" fill="#000000">δFtail</text> <text text-anchor="middle" x="638.8112" y="-167.1701" font-family="Times,serif" font-size="14.00" fill="#000000">δFtail</text>
</g> </g>
<!-- wcfsInvProcess&#45;&gt;δFtail --> <!-- wcfsInvProcess&#45;&gt;δFtail -->
<g id="edge7" class="edge"> <g id="edge9" class="edge">
<title>wcfsInvProcess&#45;&gt;δFtail</title> <title>wcfsInvProcess&#45;&gt;δFtail</title>
<path fill="none" stroke="#000000" d="M504.5002,-239.696C533.0616,-228.4505 567.8907,-213.6423 597.8112,-197.7401 601.8951,-195.5696 606.0928,-193.1097 610.1718,-190.5812"/> <path fill="none" stroke="#000000" d="M556.1511,-235.3737C573.6886,-221.6884 595.1158,-204.9677 611.7595,-191.9798"/>
<polygon fill="#000000" stroke="#000000" points="612.3018,-193.3728 618.8218,-185.0218 608.5171,-187.4841 612.3018,-193.3728"/> <polygon fill="#000000" stroke="#000000" points="614.2507,-194.4754 619.9812,-185.564 609.9443,-188.9568 614.2507,-194.4754"/>
</g> </g>
<!-- fuseRetrieveCache --> <!-- fuseRetrieveCache -->
<g id="node9" class="node"> <g id="node11" class="node">
<title>fuseRetrieveCache</title> <title>fuseRetrieveCache</title>
<ellipse fill="none" stroke="#000000" cx="523.8112" cy="-170.8701" rx="65.1077" ry="26.7407"/> <ellipse fill="none" stroke="#000000" cx="523.8112" cy="-170.8701" rx="65.1077" ry="26.7407"/>
<text text-anchor="middle" x="523.8112" y="-174.6701" font-family="Times,serif" font-size="14.00" fill="#000000">FUSE:</text> <text text-anchor="middle" x="523.8112" y="-174.6701" font-family="Times,serif" font-size="14.00" fill="#000000">FUSE:</text>
<text text-anchor="middle" x="523.8112" y="-159.6701" font-family="Times,serif" font-size="14.00" fill="#000000">retrieve cache</text> <text text-anchor="middle" x="523.8112" y="-159.6701" font-family="Times,serif" font-size="14.00" fill="#000000">retrieve cache</text>
</g> </g>
<!-- wcfsInvProcess&#45;&gt;fuseRetrieveCache --> <!-- wcfsInvProcess&#45;&gt;fuseRetrieveCache -->
<g id="edge8" class="edge"> <g id="edge10" class="edge">
<title>wcfsInvProcess&#45;&gt;fuseRetrieveCache</title> <title>wcfsInvProcess&#45;&gt;fuseRetrieveCache</title>
<path fill="none" stroke="#000000" d="M470.2026,-234.1706C478.149,-224.7876 487.1975,-214.1031 495.5685,-204.2188"/> <path fill="none" stroke="#000000" d="M523.8112,-233.6852C523.8112,-225.6102 523.8112,-216.607 523.8112,-207.9961"/>
<polygon fill="#000000" stroke="#000000" points="498.3107,-206.3965 502.1026,-196.5034 492.969,-201.8726 498.3107,-206.3965"/> <polygon fill="#000000" stroke="#000000" points="527.3113,-207.776 523.8112,-197.776 520.3113,-207.7761 527.3113,-207.776"/>
</g> </g>
<!-- wcfsRead&#45;&gt;δFtail --> <!-- wcfsRead&#45;&gt;δFtail -->
<g id="edge10" class="edge"> <g id="edge12" class="edge">
<title>wcfsRead&#45;&gt;δFtail</title> <title>wcfsRead&#45;&gt;δFtail</title>
<path fill="none" stroke="#000000" d="M824.3537,-250.4755C786.0592,-239.8896 726.8474,-221.5129 678.8112,-197.7401 674.7366,-195.7236 670.5893,-193.3524 666.584,-190.8679"/> <path fill="none" stroke="#000000" d="M798.4077,-248.6152C766.3717,-237.2133 718.3024,-218.7244 678.8112,-197.7401 674.9881,-195.7086 671.0761,-193.4005 667.2674,-191.0105"/>
<polygon fill="#000000" stroke="#000000" points="668.4114,-187.8811 658.1254,-185.3419 664.5829,-193.7414 668.4114,-187.8811"/> <polygon fill="#000000" stroke="#000000" points="668.9424,-187.9238 658.6582,-185.3771 665.1096,-193.7813 668.9424,-187.9238"/>
</g> </g>
<!-- blktabGet --> <!-- blktabGet -->
<g id="node10" class="node"> <g id="node12" class="node">
<title>blktabGet</title> <title>blktabGet</title>
<ellipse fill="none" stroke="#000000" cx="802.8112" cy="-170.8701" rx="114.6026" ry="26.7407"/> <ellipse fill="none" stroke="#000000" cx="802.8112" cy="-170.8701" rx="114.6026" ry="26.7407"/>
<text text-anchor="middle" x="802.8112" y="-174.6701" font-family="Times,serif" font-size="14.00" fill="#000000">blktab.Get(#blk):</text> <text text-anchor="middle" x="802.8112" y="-174.6701" font-family="Times,serif" font-size="14.00" fill="#000000">blktab.Get(#blk):</text>
<text text-anchor="middle" x="802.8112" y="-159.6701" font-family="Times,serif" font-size="14.00" fill="#000000">manually + → ⌈rev(#blk)⌉</text> <text text-anchor="middle" x="802.8112" y="-159.6701" font-family="Times,serif" font-size="14.00" fill="#000000">manually + → ⌈rev(#blk)⌉</text>
</g> </g>
<!-- wcfsRead&#45;&gt;blktabGet --> <!-- wcfsRead&#45;&gt;blktabGet -->
<g id="edge9" class="edge"> <g id="edge11" class="edge">
<title>wcfsRead&#45;&gt;blktabGet</title> <title>wcfsRead&#45;&gt;blktabGet</title>
<path fill="none" stroke="#000000" d="M851.7595,-242.8804C844.594,-232.3388 835.2523,-218.5957 826.6529,-205.9448"/> <path fill="none" stroke="#000000" d="M827.5379,-242.4499C824.0824,-232.4469 819.665,-219.6593 815.5225,-207.6673"/>
<polygon fill="#000000" stroke="#000000" points="829.3703,-203.7165 820.854,-197.4138 823.5811,-207.6516 829.3703,-203.7165"/> <polygon fill="#000000" stroke="#000000" points="818.7079,-206.1688 812.1345,-197.8597 812.0915,-208.4544 818.7079,-206.1688"/>
</g>
<!-- mappingRegister -->
<g id="node11" class="node">
<title>mappingRegister</title>
<ellipse fill="none" stroke="#000000" cx="1000.8112" cy="-170.8701" rx="65.1077" ry="26.7407"/>
<text text-anchor="middle" x="1000.8112" y="-174.6701" font-family="Times,serif" font-size="14.00" fill="#000000">mmappings:</text>
<text text-anchor="middle" x="1000.8112" y="-159.6701" font-family="Times,serif" font-size="14.00" fill="#000000">register/maint</text>
</g> </g>
<!-- wcfsRead&#45;&gt;mappingRegister --> <!-- wcfsRead&#45;&gt;mappingRegister -->
<g id="edge11" class="edge"> <g id="edge13" class="edge">
<title>wcfsRead&#45;&gt;mappingRegister</title> <title>wcfsRead&#45;&gt;mappingRegister</title>
<path fill="none" stroke="#000000" d="M887.6748,-244.9786C906.8447,-232.4216 934.2755,-214.4534 957.3257,-199.3547"/> <path fill="none" stroke="#000000" d="M861.3878,-245.7914C885.9872,-232.5726 922.5709,-212.9137 952.0922,-197.05"/>
<polygon fill="#000000" stroke="#000000" points="959.4718,-202.133 965.9191,-193.7257 955.6361,-196.2774 959.4718,-202.133"/> <polygon fill="#000000" stroke="#000000" points="953.8541,-200.0766 961.0061,-192.2599 950.5406,-193.9104 953.8541,-200.0766"/>
</g> </g>
<!-- headInv --> <!-- headInv -->
<g id="node12" class="node"> <g id="node14" class="node">
<title>headInv</title> <title>headInv</title>
<ellipse fill="none" stroke="#000000" cx="1156.8112" cy="-170.8701" rx="73.387" ry="18"/> <ellipse fill="none" stroke="#000000" cx="1156.8112" cy="-170.8701" rx="73.387" ry="18"/>
<text text-anchor="middle" x="1156.8112" y="-167.1701" font-family="Times,serif" font-size="14.00" fill="#000000">#blk ← head/inv.</text> <text text-anchor="middle" x="1156.8112" y="-167.1701" font-family="Times,serif" font-size="14.00" fill="#000000">#blk ← head/inv.</text>
</g> </g>
<!-- wcfsRead&#45;&gt;headInv --> <!-- wcfsRead&#45;&gt;headInv -->
<g id="edge12" class="edge"> <g id="edge14" class="edge">
<title>wcfsRead&#45;&gt;headInv</title> <title>wcfsRead&#45;&gt;headInv</title>
<path fill="none" stroke="#000000" d="M901.6392,-249.6738C943.9378,-237.3671 1014.4354,-216.6233 1074.8112,-197.7401 1084.0434,-194.8526 1093.8351,-191.7123 1103.3168,-188.6304"/> <path fill="none" stroke="#000000" d="M874.103,-250.9033C922.1291,-239.148 1004.7014,-218.3507 1074.8112,-197.7401 1084.2972,-194.9515 1094.3423,-191.8147 1104.0277,-188.6947"/>
<polygon fill="#000000" stroke="#000000" points="1104.6291,-191.8839 1113.0489,-185.4529 1102.4565,-185.2295 1104.6291,-191.8839"/> <polygon fill="#000000" stroke="#000000" points="1105.1326,-192.0159 1113.5592,-185.5939 1102.9669,-185.3593 1105.1326,-192.0159"/>
</g> </g>
<!-- zblk2file --> <!-- zblk2file -->
<g id="node13" class="node"> <g id="node15" class="node">
<title>zblk2file</title> <title>zblk2file</title>
<ellipse fill="none" stroke="#000000" cx="264.8112" cy="-90" rx="83.3857" ry="18"/> <ellipse fill="none" stroke="#000000" cx="264.8112" cy="-90" rx="83.3857" ry="18"/>
<text text-anchor="middle" x="264.8112" y="-86.3" font-family="Times,serif" font-size="14.00" fill="#000000">ZBlk* → file/[]#blk</text> <text text-anchor="middle" x="264.8112" y="-86.3" font-family="Times,serif" font-size="14.00" fill="#000000">ZBlk* → file/[]#blk</text>
</g> </g>
<!-- zobj2file&#45;&gt;zblk2file --> <!-- zobj2file&#45;&gt;zblk2file -->
<g id="edge13" class="edge"> <g id="edge15" class="edge">
<title>zobj2file&#45;&gt;zblk2file</title> <title>zobj2file&#45;&gt;zblk2file</title>
<path fill="none" stroke="#000000" d="M348.3313,-153.7196C333.1164,-142.1118 312.8112,-126.6204 296.0317,-113.8189"/> <path fill="none" stroke="#000000" d="M348.3313,-153.7196C333.1164,-142.1118 312.8112,-126.6204 296.0317,-113.8189"/>
<polygon fill="#000000" stroke="#000000" points="297.6975,-110.6875 287.6241,-107.4045 293.4515,-116.2528 297.6975,-110.6875"/> <polygon fill="#000000" stroke="#000000" points="297.6975,-110.6875 287.6241,-107.4045 293.4515,-116.2528 297.6975,-110.6875"/>
</g> </g>
<!-- zbtree2file --> <!-- zbtree2file -->
<g id="node14" class="node"> <g id="node16" class="node">
<title>zbtree2file</title> <title>zbtree2file</title>
<ellipse fill="none" stroke="#000000" cx="475.8112" cy="-90" rx="109.6807" ry="18"/> <ellipse fill="none" stroke="#000000" cx="475.8112" cy="-90" rx="109.6807" ry="18"/>
<text text-anchor="middle" x="475.8112" y="-86.3" font-family="Times,serif" font-size="14.00" fill="#000000">BTree/Bucket → file/[]#blk</text> <text text-anchor="middle" x="475.8112" y="-86.3" font-family="Times,serif" font-size="14.00" fill="#000000">BTree/Bucket → file/[]#blk</text>
</g> </g>
<!-- zobj2file&#45;&gt;zbtree2file --> <!-- zobj2file&#45;&gt;zbtree2file -->
<g id="edge14" class="edge"> <g id="edge16" class="edge">
<title>zobj2file&#45;&gt;zbtree2file</title> <title>zobj2file&#45;&gt;zbtree2file</title>
<path fill="none" stroke="#000000" d="M393.079,-153.7196C408.0478,-142.1908 427.9906,-126.831 444.5456,-114.0805"/> <path fill="none" stroke="#000000" d="M393.079,-153.7196C408.0478,-142.1908 427.9906,-126.831 444.5456,-114.0805"/>
<polygon fill="#000000" stroke="#000000" points="447.0627,-116.5596 452.8496,-107.6848 442.7914,-111.0138 447.0627,-116.5596"/> <polygon fill="#000000" stroke="#000000" points="447.0627,-116.5596 452.8496,-107.6848 442.7914,-111.0138 447.0627,-116.5596"/>
</g> </g>
<!-- δBTree --> <!-- δBTree -->
<g id="node15" class="node"> <g id="node17" class="node">
<title>δBTree</title> <title>δBTree</title>
<ellipse fill="none" stroke="#000000" cx="475.8112" cy="-18" rx="43.5923" ry="18"/> <ellipse fill="none" stroke="#000000" cx="475.8112" cy="-18" rx="43.5923" ry="18"/>
<text text-anchor="middle" x="475.8112" y="-14.3" font-family="Times,serif" font-size="14.00" fill="#000000">δ(BTree)</text> <text text-anchor="middle" x="475.8112" y="-14.3" font-family="Times,serif" font-size="14.00" fill="#000000">δ(BTree)</text>
</g> </g>
<!-- zbtree2file&#45;&gt;δBTree --> <!-- zbtree2file&#45;&gt;δBTree -->
<g id="edge15" class="edge"> <g id="edge17" class="edge">
<title>zbtree2file&#45;&gt;δBTree</title> <title>zbtree2file&#45;&gt;δBTree</title>
<path fill="none" stroke="#000000" d="M475.8112,-71.8314C475.8112,-64.131 475.8112,-54.9743 475.8112,-46.4166"/> <path fill="none" stroke="#000000" d="M475.8112,-71.8314C475.8112,-64.131 475.8112,-54.9743 475.8112,-46.4166"/>
<polygon fill="#000000" stroke="#000000" points="479.3113,-46.4132 475.8112,-36.4133 472.3113,-46.4133 479.3113,-46.4132"/> <polygon fill="#000000" stroke="#000000" points="479.3113,-46.4132 475.8112,-36.4133 472.3113,-46.4133 479.3113,-46.4132"/>
</g> </g>
<!-- client -->
<g id="node16" class="node">
<title>client</title>
<ellipse fill="none" stroke="#000000" cx="1054.8112" cy="-341.4802" rx="30.5947" ry="18"/>
<text text-anchor="middle" x="1054.8112" y="-337.7802" font-family="Times,serif" font-size="14.00" fill="#000000">client</text>
</g>
<!-- client&#45;&gt;wcfsRead -->
<g id="edge16" class="edge">
<title>client&#45;&gt;wcfsRead</title>
<path fill="none" stroke="#000000" d="M1029.8413,-330.9079C998.1468,-317.4884 943.0353,-294.1539 905.0558,-278.0733"/>
<polygon fill="#000000" stroke="#000000" points="906.367,-274.8277 895.7937,-274.1517 903.6377,-281.2737 906.367,-274.8277"/>
</g>
<!-- client&#45;&gt;mappingRegister -->
<g id="edge17" class="edge">
<title>client&#45;&gt;mappingRegister</title>
<path fill="none" stroke="#000000" d="M1041.5213,-324.9601C1033.9839,-314.7434 1025.04,-301.0299 1019.8112,-287.4802 1010.0131,-262.0902 1005.2677,-231.6953 1002.9694,-208.3035"/>
<polygon fill="#000000" stroke="#000000" points="1006.4343,-207.7489 1002.0763,-198.0919 999.4609,-208.3588 1006.4343,-207.7489"/>
</g>
<!-- clientInvHandle -->
<g id="node17" class="node">
<title>clientInvHandle</title>
<ellipse fill="none" stroke="#000000" cx="1109.8112" cy="-260.6102" rx="80.7205" ry="26.7407"/>
<text text-anchor="middle" x="1109.8112" y="-264.4102" font-family="Times,serif" font-size="14.00" fill="#000000">process</text>
<text text-anchor="middle" x="1109.8112" y="-249.4102" font-family="Times,serif" font-size="14.00" fill="#000000">#blk invalidations</text>
</g>
<!-- client&#45;&gt;clientInvHandle -->
<g id="edge18" class="edge">
<title>client&#45;&gt;clientInvHandle</title>
<path fill="none" stroke="#000000" d="M1066.2072,-324.7239C1072.0085,-316.1939 1079.286,-305.4933 1086.2244,-295.2914"/>
<polygon fill="#000000" stroke="#000000" points="1089.2033,-297.135 1091.9329,-286.8978 1083.415,-293.1984 1089.2033,-297.135"/>
</g>
<!-- nowcfs -->
<g id="node18" class="node">
<title>nowcfs</title>
<ellipse fill="none" stroke="#000000" cx="1260.8112" cy="-260.6102" rx="52.7911" ry="18"/>
<text text-anchor="middle" x="1260.8112" y="-256.9102" font-family="Times,serif" font-size="14.00" fill="#000000">!wcfs mode</text>
</g>
<!-- client&#45;&gt;nowcfs -->
<g id="edge19" class="edge">
<title>client&#45;&gt;nowcfs</title>
<path fill="none" stroke="#000000" d="M1081.1838,-332.1823C1110.3792,-321.768 1158.7442,-304.1555 1199.8112,-287.4802 1206.2226,-284.8769 1212.967,-282.0237 1219.5391,-279.1794"/>
<polygon fill="#000000" stroke="#000000" points="1221.2256,-282.262 1228.9857,-275.0487 1218.4211,-275.8483 1221.2256,-282.262"/>
</g>
<!-- clientInvHandle&#45;&gt;headInv --> <!-- clientInvHandle&#45;&gt;headInv -->
<g id="edge20" class="edge"> <g id="edge22" class="edge">
<title>clientInvHandle&#45;&gt;headInv</title> <title>clientInvHandle&#45;&gt;headInv</title>
<path fill="none" stroke="#000000" d="M1123.9127,-233.6852C1129.8276,-222.3916 1136.6935,-209.282 1142.6181,-197.9698"/> <path fill="none" stroke="#000000" d="M1101.372,-234.6536C1111.8272,-222.6247 1124.2118,-208.3761 1134.6208,-196.4004"/>
<polygon fill="#000000" stroke="#000000" points="1145.7928,-199.452 1147.3318,-188.9696 1139.5917,-196.2043 1145.7928,-199.452"/> <polygon fill="#000000" stroke="#000000" points="1137.5449,-198.3714 1141.4634,-188.5279 1132.2617,-193.7793 1137.5449,-198.3714"/>
</g> </g>
</g> </g>
</svg> </svg>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment