Commit f7abf2e6 authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent aa2f3e0f
...@@ -25,6 +25,7 @@ digraph { ...@@ -25,6 +25,7 @@ digraph {
wcfsInvProcess -> zobj2file; wcfsInvProcess -> zobj2file;
wcfsInvProcess -> δFtail; wcfsInvProcess -> δFtail;
wcfsInvProcess -> fuseRetrieveCache; wcfsInvProcess -> fuseRetrieveCache;
wcfsInvProcess -> _wcfs_zhead;
ZODB_go_inv -> fs1_go_inv; ZODB_go_inv -> fs1_go_inv;
ZODB_go_inv -> zeo_go_inv; ZODB_go_inv -> zeo_go_inv;
...@@ -34,7 +35,7 @@ digraph { ...@@ -34,7 +35,7 @@ digraph {
wcfsRead -> blktabGet; wcfsRead -> blktabGet;
wcfsRead -> δFtail; wcfsRead -> δFtail;
wcfsRead -> mappingRegister; wcfsRead -> mappingRegister;
wcfsRead -> headInv; wcfsRead -> headWatch;
...@@ -56,7 +57,10 @@ digraph { ...@@ -56,7 +57,10 @@ digraph {
// client -> wcfs_spawn; // client -> wcfs_spawn;
clientInvHandle -> headInv; clientInvHandle -> headWatch;
headWatch -> fileSock;
_wcfs_zhead -> fileSock;
// Btree_read -> ZODB_read; // Btree_read -> ZODB_read;
// ZBlk_read -> ZODB_read; // ZBlk_read -> ZODB_read;
...@@ -68,14 +72,16 @@ digraph { ...@@ -68,14 +72,16 @@ digraph {
nowcfs [label="!wcfs mode"] nowcfs [label="!wcfs mode"]
wcfsInvProcess [label="process\nZODB invalidations"] wcfsInvProcess [label="process\nZODB invalidations"]
zconnCacheGet [label="zconn.Cache.Get", style=filled fillcolor=grey95] zconnCacheGet [label="zonn.\n.Cache.Get", style=filled fillcolor=grey95]
zobj2file [label="Z* → file/[]#blk"] zobj2file [label="Z* → file/[]#blk"]
zblk2file [label="ZBlk*file/[]#blk", style=filled fillcolor=grey95] zblk2file [label="ZBlk*\n↓\nfile/[]#blk", style=filled fillcolor=grey95]
zbtree2file [label="BTree/Bucketfile/[]#blk"] zbtree2file [label="BTree/Bucket\n↓\nfile/[]#blk"]
δBTree [label="δ(BTree)"] δBTree [label="δ(BTree)"]
fuseRetrieveCache [label="FUSE:\nretrieve cache", style=filled fillcolor=grey95] fuseRetrieveCache [label="FUSE:\nretrieve cache", style=filled fillcolor=grey95]
_wcfs_zhead [label=".wcfs/\nzhead"]
wcfsRead [label="read(#blk)"] wcfsRead [label="read(#blk)"]
blktabGet [label="blktab.Get(#blk):\nmanually + → ⌈rev(#blk)⌉"] blktabGet [label="blktab.Get(#blk):\nmanually + → ⌈rev(#blk)⌉"]
...@@ -83,13 +89,14 @@ digraph { ...@@ -83,13 +89,14 @@ digraph {
mappingRegister [label="mmappings:\nregister/maint"] mappingRegister [label="mmappings:\nregister/maint"]
clientInvHandle [label="process\n#blk invalidations"] clientInvHandle [label="process\n#blk invalidations"]
headInv [label="#blk ← head/inv."] headWatch [label="#blk ← head/watch"]
fileSock [label="FileSock"]
ZODB_go_inv [label="ZODB/go\ninvalidations"] ZODB_go_inv [label="ZODB/go\ninvalidations"]
fs1_go_inv [label="fs1/go\ninvalidations", style=filled fillcolor=grey95] fs1_go_inv [label="fs1/go\ninvalidations", style=filled fillcolor=grey95]
zeo_go_inv [label="zeo/go\ninvalidations"] zeo_go_inv [label="zeo/go\ninvalidations"]
neo_go_inv [label="neo/go\ninvalidations"] neo_go_inv [label="neo/go\ninvalidations"]
zcache_go_inv [label="ZCache/go\n<-watchq"] zcache_go_inv [label="ZCache/go\nwatchq"]
// Btree_read [label="BTree read", style=filled fillcolor=lightyellow] // Btree_read [label="BTree read", style=filled fillcolor=lightyellow]
// ZBlk_read [label="ZBigFile / ZBlk* read", style=filled fillcolor=lightyellow] // ZBlk_read [label="ZBigFile / ZBlk* read", style=filled fillcolor=lightyellow]
// ZODB_read [label="ZODB deserialize object", style=filled fillcolor=lightyellow] // ZODB_read [label="ZODB deserialize object", style=filled fillcolor=lightyellow]
......
...@@ -4,329 +4,365 @@ ...@@ -4,329 +4,365 @@
<!-- 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="1568pt" height="403pt" <svg width="1556pt" height="424pt"
viewBox="0.00 0.00 1568.46 402.96" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> viewBox="0.00 0.00 1556.26 424.17" 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 398.9605)"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 420.1737)">
<title>%3</title> <title>%3</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-398.9605 1564.4565,-398.9605 1564.4565,4 -4,4"/> <polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-420.1737 1552.2584,-420.1737 1552.2584,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="947.8112" cy="-368.0904" rx="27.0966" ry="18"/> <ellipse fill="none" stroke="#000000" cx="952.2046" cy="-389.3036" rx="27.0966" ry="18"/>
<text text-anchor="middle" x="947.8112" y="-364.3904" font-family="Times,serif" font-size="14.00" fill="#000000">wcfs</text> <text text-anchor="middle" x="952.2046" y="-385.6036" font-family="Times,serif" font-size="14.00" fill="#000000">wcfs</text>
</g> </g>
<!-- invProto --> <!-- invProto -->
<g id="node2" class="node"> <g id="node2" class="node">
<title>invProto</title> <title>invProto</title>
<ellipse fill="#f2f2f2" stroke="#000000" cx="1104.8112" cy="-368.0904" rx="78.4777" ry="26.7407"/> <ellipse fill="#f2f2f2" stroke="#000000" cx="1131.2046" cy="-389.3036" rx="78.4777" ry="26.7407"/>
<text text-anchor="middle" x="1104.8112" y="-371.8904" font-family="Times,serif" font-size="14.00" fill="#000000">open/invalidation</text> <text text-anchor="middle" x="1131.2046" y="-393.1036" font-family="Times,serif" font-size="14.00" fill="#000000">open/invalidation</text>
<text text-anchor="middle" x="1104.8112" y="-356.8904" font-family="Times,serif" font-size="14.00" fill="#000000">protocol</text> <text text-anchor="middle" x="1131.2046" y="-378.1036" font-family="Times,serif" font-size="14.00" fill="#000000">protocol</text>
</g> </g>
<!-- wcfs&#45;&gt;invProto --> <!-- wcfs&#45;&gt;invProto -->
<g id="edge1" class="edge"> <g id="edge1" class="edge">
<title>wcfs&#45;&gt;invProto</title> <title>wcfs&#45;&gt;invProto</title>
<path fill="none" stroke="#000000" d="M975.4088,-368.0904C988.9027,-368.0904 1002.3966,-368.0904 1015.8905,-368.0904"/> <path fill="none" stroke="#000000" d="M979.8237,-389.3036C1000.6589,-389.3036 1021.4941,-389.3036 1042.3293,-389.3036"/>
<polygon fill="#000000" stroke="#000000" points="1016.2094,-371.5905 1026.2094,-368.0904 1016.2093,-364.5905 1016.2094,-371.5905"/> <polygon fill="#000000" stroke="#000000" points="1042.5575,-392.8037 1052.5575,-389.3036 1042.5575,-385.8037 1042.5575,-392.8037"/>
</g> </g>
<!-- autoexit --> <!-- autoexit -->
<g id="node4" class="node"> <g id="node4" class="node">
<title>autoexit</title> <title>autoexit</title>
<ellipse fill="none" stroke="#000000" cx="627.8112" cy="-278.3503" rx="52.1524" ry="26.7407"/> <ellipse fill="none" stroke="#000000" cx="603.2046" cy="-299.5635" rx="52.1524" ry="26.7407"/>
<text text-anchor="middle" x="627.8112" y="-282.1503" font-family="Times,serif" font-size="14.00" fill="#000000">autoexit</text> <text text-anchor="middle" x="603.2046" y="-303.3635" font-family="Times,serif" font-size="14.00" fill="#000000">autoexit</text>
<text text-anchor="middle" x="627.8112" y="-267.1503" font-family="Times,serif" font-size="14.00" fill="#000000">if !activity</text> <text text-anchor="middle" x="603.2046" y="-288.3635" 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="edge3" 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="M921.2727,-363.2609C873.8768,-354.2817 771.8618,-333.3454 688.8112,-305.2203 684.5656,-303.7826 680.2083,-302.1648 675.8702,-300.4543"/> <path fill="none" stroke="#000000" d="M925.5266,-385.3135C874.1202,-377.2254 758.1195,-357.0277 664.2046,-326.4335 659.9426,-325.0451 655.5739,-323.4617 651.2282,-321.7741"/>
<polygon fill="#000000" stroke="#000000" points="677.0355,-297.1493 666.4551,-296.5956 674.3809,-303.6265 677.0355,-297.1493"/> <polygon fill="#000000" stroke="#000000" points="652.3843,-318.4661 641.8021,-317.9484 649.7518,-324.9523 652.3843,-318.4661"/>
</g> </g>
<!-- wcfsInvProcess --> <!-- wcfsInvProcess -->
<g id="node5" class="node"> <g id="node5" class="node">
<title>wcfsInvProcess</title> <title>wcfsInvProcess</title>
<ellipse fill="none" stroke="#000000" cx="787.8112" cy="-278.3503" rx="89.6056" ry="26.7407"/> <ellipse fill="none" stroke="#000000" cx="763.2046" cy="-299.5635" rx="89.6056" ry="26.7407"/>
<text text-anchor="middle" x="787.8112" y="-282.1503" font-family="Times,serif" font-size="14.00" fill="#000000">process</text> <text text-anchor="middle" x="763.2046" y="-303.3635" font-family="Times,serif" font-size="14.00" fill="#000000">process</text>
<text text-anchor="middle" x="787.8112" y="-267.1503" font-family="Times,serif" font-size="14.00" fill="#000000">ZODB invalidations</text> <text text-anchor="middle" x="763.2046" y="-288.3635" 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="edge4" 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="M926.894,-356.3585C904.7855,-343.9583 869.0751,-323.9292 839.3755,-307.2715"/> <path fill="none" stroke="#000000" d="M929.7816,-378.6568C903.0093,-365.9449 857.2349,-344.2105 820.4374,-326.7385"/>
<polygon fill="#000000" stroke="#000000" points="840.8071,-304.0615 830.3731,-302.2222 837.3827,-310.1668 840.8071,-304.0615"/> <polygon fill="#000000" stroke="#000000" points="821.8272,-323.524 811.2926,-322.3964 818.8248,-329.8474 821.8272,-323.524"/>
</g> </g>
<!-- wcfsRead --> <!-- wcfsRead -->
<g id="node6" class="node"> <g id="node6" class="node">
<title>wcfsRead</title> <title>wcfsRead</title>
<ellipse fill="none" stroke="#000000" cx="1119.8112" cy="-278.3503" rx="47.3916" ry="18"/> <ellipse fill="none" stroke="#000000" cx="1138.2046" cy="-299.5635" rx="47.3916" ry="18"/>
<text text-anchor="middle" x="1119.8112" y="-274.6503" font-family="Times,serif" font-size="14.00" fill="#000000">read(#blk)</text> <text text-anchor="middle" x="1138.2046" y="-295.8635" 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="edge5" 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="M969.2473,-356.9062C997.6847,-342.0692 1048.3174,-315.6518 1082.9497,-297.5826"/> <path fill="none" stroke="#000000" d="M974.2716,-378.6568C1005.1432,-363.7621 1061.6893,-336.4801 1099.6147,-318.1821"/>
<polygon fill="#000000" stroke="#000000" points="1084.5768,-300.6815 1091.8236,-292.9527 1081.3387,-294.4754 1084.5768,-300.6815"/> <polygon fill="#000000" stroke="#000000" points="1101.3429,-321.2344 1108.8286,-313.7367 1098.3011,-314.9298 1101.3429,-321.2344"/>
</g> </g>
<!-- wcfsGC --> <!-- wcfsGC -->
<g id="node7" class="node"> <g id="node7" class="node">
<title>wcfsGC</title> <title>wcfsGC</title>
<ellipse fill="none" stroke="#000000" cx="947.8112" cy="-278.3503" rx="35.2113" ry="26.7407"/> <ellipse fill="none" stroke="#000000" cx="952.2046" cy="-299.5635" rx="35.2113" ry="26.7407"/>
<text text-anchor="middle" x="947.8112" y="-282.1503" font-family="Times,serif" font-size="14.00" fill="#000000">GC</text> <text text-anchor="middle" x="952.2046" y="-303.3635" font-family="Times,serif" font-size="14.00" fill="#000000">GC</text>
<text text-anchor="middle" x="947.8112" y="-267.1503" font-family="Times,serif" font-size="14.00" fill="#000000">@rev/</text> <text text-anchor="middle" x="952.2046" y="-288.3635" font-family="Times,serif" font-size="14.00" fill="#000000">@rev/</text>
</g> </g>
<!-- wcfs&#45;&gt;wcfsGC --> <!-- wcfs&#45;&gt;wcfsGC -->
<g id="edge6" class="edge"> <g id="edge6" class="edge">
<title>wcfs&#45;&gt;wcfsGC</title> <title>wcfs&#45;&gt;wcfsGC</title>
<path fill="none" stroke="#000000" d="M947.8112,-349.9302C947.8112,-340.0272 947.8112,-327.395 947.8112,-315.5075"/> <path fill="none" stroke="#000000" d="M952.2046,-371.1434C952.2046,-361.2404 952.2046,-348.6082 952.2046,-336.7207"/>
<polygon fill="#000000" stroke="#000000" points="951.3113,-315.3399 947.8112,-305.3399 944.3113,-315.34 951.3113,-315.3399"/> <polygon fill="#000000" stroke="#000000" points="955.7047,-336.5531 952.2046,-326.5531 948.7047,-336.5532 955.7047,-336.5531"/>
</g> </g>
<!-- client --> <!-- client -->
<g id="node3" class="node"> <g id="node3" class="node">
<title>client</title> <title>client</title>
<ellipse fill="none" stroke="#000000" cx="1247.8112" cy="-368.0904" rx="30.5947" ry="18"/> <ellipse fill="none" stroke="#000000" cx="1286.2046" cy="-389.3036" rx="30.5947" ry="18"/>
<text text-anchor="middle" x="1247.8112" y="-364.3904" font-family="Times,serif" font-size="14.00" fill="#000000">client</text> <text text-anchor="middle" x="1286.2046" y="-385.6036" font-family="Times,serif" font-size="14.00" fill="#000000">client</text>
</g> </g>
<!-- invProto&#45;&gt;client --> <!-- invProto&#45;&gt;client -->
<g id="edge2" class="edge"> <g id="edge2" class="edge">
<title>invProto&#45;&gt;client</title> <title>invProto&#45;&gt;client</title>
<path fill="none" stroke="#000000" d="M1193.8179,-368.0904C1201.6112,-368.0904 1209.4044,-368.0904 1217.1976,-368.0904"/> <path fill="none" stroke="#000000" d="M1220.2456,-389.3036C1232.0004,-389.3036 1243.7553,-389.3036 1255.5102,-389.3036"/>
<polygon fill="#000000" stroke="#000000" points="1193.5729,-364.5905 1183.5729,-368.0904 1193.5729,-371.5905 1193.5729,-364.5905"/> <polygon fill="#000000" stroke="#000000" points="1219.9156,-385.8037 1209.9155,-389.3036 1219.9155,-392.8037 1219.9156,-385.8037"/>
</g> </g>
<!-- client&#45;&gt;wcfsRead --> <!-- client&#45;&gt;wcfsRead -->
<g id="edge23" class="edge"> <g id="edge24" class="edge">
<title>client&#45;&gt;wcfsRead</title> <title>client&#45;&gt;wcfsRead</title>
<path fill="none" stroke="#000000" d="M1228.0917,-354.2652C1207.6058,-339.9027 1175.2476,-317.2165 1151.2335,-300.3803"/> <path fill="none" stroke="#000000" d="M1264.6841,-376.2546C1240.4497,-361.56 1200.7439,-337.4844 1172.2829,-320.227"/>
<polygon fill="#000000" stroke="#000000" points="1152.9986,-297.3433 1142.8012,-294.4685 1148.9801,-303.075 1152.9986,-297.3433"/> <polygon fill="#000000" stroke="#000000" points="1173.8369,-317.0761 1163.4713,-314.884 1170.2075,-323.0617 1173.8369,-317.0761"/>
</g> </g>
<!-- mappingRegister --> <!-- mappingRegister -->
<g id="node18" class="node"> <g id="node19" class="node">
<title>mappingRegister</title> <title>mappingRegister</title>
<ellipse fill="none" stroke="#000000" cx="1264.8112" cy="-188.6102" rx="65.1077" ry="26.7407"/> <ellipse fill="none" stroke="#000000" cx="1483.2046" cy="-209.8234" rx="65.1077" ry="26.7407"/>
<text text-anchor="middle" x="1264.8112" y="-192.4102" font-family="Times,serif" font-size="14.00" fill="#000000">mmappings:</text> <text text-anchor="middle" x="1483.2046" y="-213.6234" font-family="Times,serif" font-size="14.00" fill="#000000">mmappings:</text>
<text text-anchor="middle" x="1264.8112" y="-177.4102" font-family="Times,serif" font-size="14.00" fill="#000000">register/maint</text> <text text-anchor="middle" x="1483.2046" y="-198.6234" font-family="Times,serif" font-size="14.00" fill="#000000">register/maint</text>
</g> </g>
<!-- client&#45;&gt;mappingRegister --> <!-- client&#45;&gt;mappingRegister -->
<g id="edge24" class="edge"> <g id="edge25" class="edge">
<title>client&#45;&gt;mappingRegister</title> <title>client&#45;&gt;mappingRegister</title>
<path fill="none" stroke="#000000" d="M1249.5348,-349.8932C1252.2816,-320.8932 1257.7076,-263.6077 1261.2976,-225.7051"/> <path fill="none" stroke="#000000" d="M1308.5249,-376.7197C1327.784,-365.1945 1355.6605,-346.8604 1376.2046,-326.4335 1396.9483,-305.8082 1394.8355,-294.6147 1414.2046,-272.6934 1423.9619,-261.6504 1435.493,-250.5204 1446.3067,-240.7583"/>
<polygon fill="#000000" stroke="#000000" points="1264.7991,-225.8537 1262.2578,-215.5682 1257.8303,-225.1935 1264.7991,-225.8537"/> <polygon fill="#000000" stroke="#000000" points="1448.8634,-243.1688 1454.0184,-233.9126 1444.2163,-237.9339 1448.8634,-243.1688"/>
</g> </g>
<!-- clientInvHandle --> <!-- clientInvHandle -->
<g id="node23" class="node"> <g id="node24" class="node">
<title>clientInvHandle</title> <title>clientInvHandle</title>
<ellipse fill="none" stroke="#000000" cx="1356.8112" cy="-278.3503" rx="80.7205" ry="26.7407"/> <ellipse fill="none" stroke="#000000" cx="1286.2046" cy="-299.5635" rx="80.7205" ry="26.7407"/>
<text text-anchor="middle" x="1356.8112" y="-282.1503" font-family="Times,serif" font-size="14.00" fill="#000000">process</text> <text text-anchor="middle" x="1286.2046" y="-303.3635" font-family="Times,serif" font-size="14.00" fill="#000000">process</text>
<text text-anchor="middle" x="1356.8112" y="-267.1503" font-family="Times,serif" font-size="14.00" fill="#000000">#blk invalidations</text> <text text-anchor="middle" x="1286.2046" y="-288.3635" font-family="Times,serif" font-size="14.00" fill="#000000">#blk invalidations</text>
</g> </g>
<!-- client&#45;&gt;clientInvHandle --> <!-- client&#45;&gt;clientInvHandle -->
<g id="edge25" class="edge"> <g id="edge26" class="edge">
<title>client&#45;&gt;clientInvHandle</title> <title>client&#45;&gt;clientInvHandle</title>
<path fill="none" stroke="#000000" d="M1265.8103,-353.2716C1280.0729,-341.5292 1300.5081,-324.7049 1318.4013,-309.9733"/> <path fill="none" stroke="#000000" d="M1286.2046,-371.1434C1286.2046,-361.2404 1286.2046,-348.6082 1286.2046,-336.7207"/>
<polygon fill="#000000" stroke="#000000" points="1320.9168,-312.4359 1326.4124,-303.3777 1316.4676,-307.0317 1320.9168,-312.4359"/> <polygon fill="#000000" stroke="#000000" points="1289.7047,-336.5531 1286.2046,-326.5531 1282.7047,-336.5532 1289.7047,-336.5531"/>
</g> </g>
<!-- nowcfs --> <!-- nowcfs -->
<g id="node24" class="node"> <g id="node25" class="node">
<title>nowcfs</title> <title>nowcfs</title>
<ellipse fill="none" stroke="#000000" cx="1507.8112" cy="-278.3503" rx="52.7911" ry="18"/> <ellipse fill="none" stroke="#000000" cx="1476.2046" cy="-299.5635" rx="52.7911" ry="18"/>
<text text-anchor="middle" x="1507.8112" y="-274.6503" font-family="Times,serif" font-size="14.00" fill="#000000">!wcfs mode</text> <text text-anchor="middle" x="1476.2046" y="-295.8635" font-family="Times,serif" font-size="14.00" fill="#000000">!wcfs mode</text>
</g> </g>
<!-- client&#45;&gt;nowcfs --> <!-- client&#45;&gt;nowcfs -->
<g id="edge26" class="edge"> <g id="edge27" class="edge">
<title>client&#45;&gt;nowcfs</title> <title>client&#45;&gt;nowcfs</title>
<path fill="none" stroke="#000000" d="M1275.4952,-360.3797C1314.2362,-349.3561 1386.6328,-327.9035 1446.8112,-305.2203 1453.359,-302.7523 1460.217,-299.9509 1466.8732,-297.1115"/> <path fill="none" stroke="#000000" d="M1310.2682,-377.938C1341.843,-363.0247 1397.7075,-336.639 1435.8168,-318.6393"/>
<polygon fill="#000000" stroke="#000000" points="1468.6473,-300.1567 1476.4215,-292.9586 1465.8553,-293.7376 1468.6473,-300.1567"/> <polygon fill="#000000" stroke="#000000" points="1437.5501,-321.6915 1445.0975,-314.2559 1434.5605,-315.3619 1437.5501,-321.6915"/>
</g> </g>
<!-- ZODB_go_inv --> <!-- ZODB_go_inv -->
<g id="node8" class="node"> <g id="node8" class="node">
<title>ZODB_go_inv</title> <title>ZODB_go_inv</title>
<ellipse fill="none" stroke="#000000" cx="324.8112" cy="-188.6102" rx="60.623" ry="26.7407"/> <ellipse fill="none" stroke="#000000" cx="467.2046" cy="-209.8234" rx="60.623" ry="26.7407"/>
<text text-anchor="middle" x="324.8112" y="-192.4102" font-family="Times,serif" font-size="14.00" fill="#000000">ZODB/go</text> <text text-anchor="middle" x="467.2046" y="-213.6234" font-family="Times,serif" font-size="14.00" fill="#000000">ZODB/go</text>
<text text-anchor="middle" x="324.8112" y="-177.4102" font-family="Times,serif" font-size="14.00" fill="#000000">invalidations</text> <text text-anchor="middle" x="467.2046" y="-198.6234" 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="edge7" class="edge"> <g id="edge7" class="edge">
<title>wcfsInvProcess&#45;&gt;ZODB_go_inv</title> <title>wcfsInvProcess&#45;&gt;ZODB_go_inv</title>
<path fill="none" stroke="#000000" d="M723.6883,-259.5135C712.145,-256.5331 700.1713,-253.7055 688.8112,-251.4802 559.6238,-226.1743 522.5488,-247.306 394.8112,-215.4802 389.4429,-214.1427 383.9278,-212.5087 378.4625,-210.7136"/> <path fill="none" stroke="#000000" d="M696.7857,-281.4322C635.7728,-264.7202 552.5527,-241.7612 537.2046,-236.6934 532.3085,-235.0768 527.2517,-233.3172 522.2012,-231.4975"/>
<polygon fill="#000000" stroke="#000000" points="379.3162,-207.3053 368.7214,-207.3375 377.0239,-213.9193 379.3162,-207.3053"/> <polygon fill="#000000" stroke="#000000" points="523.1339,-228.1114 512.5403,-227.9459 520.7185,-234.6815 523.1339,-228.1114"/>
</g> </g>
<!-- zconnCacheGet --> <!-- zconnCacheGet -->
<g id="node9" class="node"> <g id="node9" class="node">
<title>zconnCacheGet</title> <title>zconnCacheGet</title>
<ellipse fill="#f2f2f2" stroke="#000000" cx="474.8112" cy="-188.6102" rx="71.4873" ry="18"/> <ellipse fill="#f2f2f2" stroke="#000000" cx="749.2046" cy="-209.8234" rx="54.3945" ry="26.7407"/>
<text text-anchor="middle" x="474.8112" y="-184.9102" font-family="Times,serif" font-size="14.00" fill="#000000">zconn.Cache.Get</text> <text text-anchor="middle" x="749.2046" y="-213.6234" font-family="Times,serif" font-size="14.00" fill="#000000">zonn.</text>
<text text-anchor="middle" x="749.2046" y="-198.6234" font-family="Times,serif" font-size="14.00" fill="#000000">.Cache.Get</text>
</g> </g>
<!-- wcfsInvProcess&#45;&gt;zconnCacheGet --> <!-- wcfsInvProcess&#45;&gt;zconnCacheGet -->
<g id="edge8" class="edge"> <g id="edge8" class="edge">
<title>wcfsInvProcess&#45;&gt;zconnCacheGet</title> <title>wcfsInvProcess&#45;&gt;zconnCacheGet</title>
<path fill="none" stroke="#000000" d="M721.2468,-260.277C710.406,-257.3355 699.2965,-254.3222 688.8112,-251.4802 629.7056,-235.4599 614.4515,-233.1278 555.8112,-215.4802 546.341,-212.6302 536.3025,-209.4397 526.6358,-206.2799"/> <path fill="none" stroke="#000000" d="M759.0041,-272.6385C757.7305,-264.4748 756.3089,-255.3623 754.9522,-246.6657"/>
<polygon fill="#000000" stroke="#000000" points="527.7211,-202.9524 517.128,-203.1441 525.5285,-209.6002 527.7211,-202.9524"/> <polygon fill="#000000" stroke="#000000" points="758.4017,-246.0703 753.4021,-236.7294 751.4854,-247.1494 758.4017,-246.0703"/>
</g> </g>
<!-- zobj2file --> <!-- zobj2file -->
<g id="node10" class="node"> <g id="node10" class="node">
<title>zobj2file</title> <title>zobj2file</title>
<ellipse fill="none" stroke="#000000" cx="634.8112" cy="-188.6102" rx="70.3881" ry="18"/> <ellipse fill="none" stroke="#000000" cx="183.2046" cy="-209.8234" rx="70.3881" ry="18"/>
<text text-anchor="middle" x="634.8112" y="-184.9102" font-family="Times,serif" font-size="14.00" fill="#000000">Z* → file/[]#blk</text> <text text-anchor="middle" x="183.2046" y="-206.1234" 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="edge9" class="edge"> <g id="edge9" class="edge">
<title>wcfsInvProcess&#45;&gt;zobj2file</title> <title>wcfsInvProcess&#45;&gt;zobj2file</title>
<path fill="none" stroke="#000000" d="M746.81,-254.3016C723.5232,-240.643 694.5977,-223.6771 671.9761,-210.4087"/> <path fill="none" stroke="#000000" d="M698.8001,-280.7349C687.3407,-277.7713 675.4683,-274.9474 664.2046,-272.6934 644.4808,-268.7465 386.2372,-235.6668 256.5187,-219.1419"/>
<polygon fill="#000000" stroke="#000000" points="673.7252,-207.3771 663.3286,-205.3367 670.1836,-213.4151 673.7252,-207.3771"/> <polygon fill="#000000" stroke="#000000" points="256.632,-215.6282 246.2699,-217.8367 255.7476,-222.5721 256.632,-215.6282"/>
</g> </g>
<!-- δFtail --> <!-- δFtail -->
<g id="node11" class="node"> <g id="node11" class="node">
<title>δFtail</title> <title>δFtail</title>
<ellipse fill="#f2f2f2" stroke="#000000" cx="902.8112" cy="-188.6102" rx="31.6951" ry="18"/> <ellipse fill="#f2f2f2" stroke="#000000" cx="942.2046" cy="-209.8234" rx="31.6951" ry="18"/>
<text text-anchor="middle" x="902.8112" y="-184.9102" font-family="Times,serif" font-size="14.00" fill="#000000">δFtail</text> <text text-anchor="middle" x="942.2046" y="-206.1234" font-family="Times,serif" font-size="14.00" fill="#000000">δFtail</text>
</g> </g>
<!-- wcfsInvProcess&#45;&gt;δFtail --> <!-- wcfsInvProcess&#45;&gt;δFtail -->
<g id="edge10" class="edge"> <g id="edge10" class="edge">
<title>wcfsInvProcess&#45;&gt;δFtail</title> <title>wcfsInvProcess&#45;&gt;δFtail</title>
<path fill="none" stroke="#000000" d="M820.1511,-253.1138C837.6886,-239.4285 859.1158,-222.7078 875.7595,-209.7199"/> <path fill="none" stroke="#000000" d="M816.2263,-277.6703C842.2862,-266.3437 873.8829,-251.7549 901.2046,-236.6934 905.2548,-234.4607 909.4331,-231.965 913.5025,-229.4187"/>
<polygon fill="#000000" stroke="#000000" points="878.2507,-212.2155 883.9812,-203.3041 873.9443,-206.6969 878.2507,-212.2155"/> <polygon fill="#000000" stroke="#000000" points="915.6376,-232.2065 922.1452,-223.8458 911.8442,-226.3235 915.6376,-232.2065"/>
</g> </g>
<!-- fuseRetrieveCache --> <!-- fuseRetrieveCache -->
<g id="node12" class="node"> <g id="node12" class="node">
<title>fuseRetrieveCache</title> <title>fuseRetrieveCache</title>
<ellipse fill="#f2f2f2" stroke="#000000" cx="787.8112" cy="-188.6102" rx="65.1077" ry="26.7407"/> <ellipse fill="#f2f2f2" stroke="#000000" cx="611.2046" cy="-209.8234" rx="65.1077" ry="26.7407"/>
<text text-anchor="middle" x="787.8112" y="-192.4102" font-family="Times,serif" font-size="14.00" fill="#000000">FUSE:</text> <text text-anchor="middle" x="611.2046" y="-213.6234" font-family="Times,serif" font-size="14.00" fill="#000000">FUSE:</text>
<text text-anchor="middle" x="787.8112" y="-177.4102" font-family="Times,serif" font-size="14.00" fill="#000000">retrieve cache</text> <text text-anchor="middle" x="611.2046" y="-198.6234" 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="edge11" class="edge"> <g id="edge11" class="edge">
<title>wcfsInvProcess&#45;&gt;fuseRetrieveCache</title> <title>wcfsInvProcess&#45;&gt;fuseRetrieveCache</title>
<path fill="none" stroke="#000000" d="M787.8112,-251.4253C787.8112,-243.3504 787.8112,-234.3471 787.8112,-225.7362"/> <path fill="none" stroke="#000000" d="M722.4714,-275.5148C702.3885,-263.658 678.0842,-249.3088 657.3199,-237.0497"/>
<polygon fill="#000000" stroke="#000000" points="791.3113,-225.5161 787.8112,-215.5162 784.3113,-225.5162 791.3113,-225.5161"/> <polygon fill="#000000" stroke="#000000" points="659.0509,-234.0072 648.6603,-231.9371 655.4921,-240.035 659.0509,-234.0072"/>
</g>
<!-- _wcfs_zhead -->
<g id="node13" class="node">
<title>_wcfs_zhead</title>
<ellipse fill="none" stroke="#000000" cx="857.2046" cy="-209.8234" rx="35.2113" ry="26.7407"/>
<text text-anchor="middle" x="857.2046" y="-213.6234" font-family="Times,serif" font-size="14.00" fill="#000000">.wcfs/</text>
<text text-anchor="middle" x="857.2046" y="-198.6234" font-family="Times,serif" font-size="14.00" fill="#000000">zhead</text>
</g>
<!-- wcfsInvProcess&#45;&gt;_wcfs_zhead -->
<g id="edge12" class="edge">
<title>wcfsInvProcess&#45;&gt;_wcfs_zhead</title>
<path fill="none" stroke="#000000" d="M790.1412,-273.8476C801.8011,-262.7161 815.489,-249.6485 827.4478,-238.2316"/>
<polygon fill="#000000" stroke="#000000" points="830.2019,-240.4413 835.0181,-231.0044 825.3682,-235.3781 830.2019,-240.4413"/>
</g> </g>
<!-- wcfsRead&#45;&gt;δFtail --> <!-- wcfsRead&#45;&gt;δFtail -->
<g id="edge17" class="edge"> <g id="edge18" class="edge">
<title>wcfsRead&#45;&gt;δFtail</title> <title>wcfsRead&#45;&gt;δFtail</title>
<path fill="none" stroke="#000000" d="M1081.3894,-267.7447C1044.7522,-256.9331 988.5406,-238.5028 942.8112,-215.4802 938.7505,-213.4359 934.6113,-211.0486 930.6099,-208.5562"/> <path fill="none" stroke="#000000" d="M1102.5668,-287.6028C1070.3202,-276.2239 1021.9382,-257.7497 982.2046,-236.6934 978.3792,-234.6662 974.4659,-232.3606 970.6564,-229.972"/>
<polygon fill="#000000" stroke="#000000" points="932.4387,-205.5701 922.1543,-203.0241 928.6062,-211.4278 932.4387,-205.5701"/> <polygon fill="#000000" stroke="#000000" points="972.3312,-226.8852 962.0466,-224.3397 968.4991,-232.7431 972.3312,-226.8852"/>
</g> </g>
<!-- blktabGet --> <!-- blktabGet -->
<g id="node17" class="node"> <g id="node18" class="node">
<title>blktabGet</title> <title>blktabGet</title>
<ellipse fill="none" stroke="#000000" cx="1066.8112" cy="-188.6102" rx="114.6026" ry="26.7407"/> <ellipse fill="none" stroke="#000000" cx="1106.2046" cy="-209.8234" rx="114.6026" ry="26.7407"/>
<text text-anchor="middle" x="1066.8112" y="-192.4102" font-family="Times,serif" font-size="14.00" fill="#000000">blktab.Get(#blk):</text> <text text-anchor="middle" x="1106.2046" y="-213.6234" font-family="Times,serif" font-size="14.00" fill="#000000">blktab.Get(#blk):</text>
<text text-anchor="middle" x="1066.8112" y="-177.4102" font-family="Times,serif" font-size="14.00" fill="#000000">manually + → ⌈rev(#blk)⌉</text> <text text-anchor="middle" x="1106.2046" y="-198.6234" 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="edge16" class="edge"> <g id="edge17" class="edge">
<title>wcfsRead&#45;&gt;blktabGet</title> <title>wcfsRead&#45;&gt;blktabGet</title>
<path fill="none" stroke="#000000" d="M1109.3401,-260.6205C1103.2227,-250.2624 1095.2798,-236.8135 1087.917,-224.3468"/> <path fill="none" stroke="#000000" d="M1131.7289,-281.4032C1128.1263,-271.3002 1123.5108,-258.3566 1119.1977,-246.2611"/>
<polygon fill="#000000" stroke="#000000" points="1090.7917,-222.3316 1082.6927,-215.501 1084.7644,-225.8913 1090.7917,-222.3316"/> <polygon fill="#000000" stroke="#000000" points="1122.4841,-245.0565 1115.8287,-236.813 1115.8908,-247.4077 1122.4841,-245.0565"/>
</g> </g>
<!-- wcfsRead&#45;&gt;mappingRegister --> <!-- wcfsRead&#45;&gt;mappingRegister -->
<g id="edge18" class="edge"> <g id="edge19" class="edge">
<title>wcfsRead&#45;&gt;mappingRegister</title> <title>wcfsRead&#45;&gt;mappingRegister</title>
<path fill="none" stroke="#000000" d="M1144.7376,-262.9234C1165.3807,-250.1475 1195.2367,-231.6696 1220.0126,-216.3359"/> <path fill="none" stroke="#000000" d="M1165.9282,-284.8924C1175.3286,-280.4156 1186.0288,-275.8483 1196.2046,-272.6934 1287.9077,-244.2624 1316.3698,-261.1777 1409.2046,-236.6934 1414.7925,-235.2197 1420.5532,-233.4998 1426.2771,-231.6552"/>
<polygon fill="#000000" stroke="#000000" points="1221.8796,-219.2966 1228.5409,-211.0578 1218.1957,-213.3443 1221.8796,-219.2966"/> <polygon fill="#000000" stroke="#000000" points="1427.4666,-234.948 1435.8385,-228.4548 1425.2446,-228.31 1427.4666,-234.948"/>
</g> </g>
<!-- headInv --> <!-- headWatch -->
<g id="node19" class="node"> <g id="node20" class="node">
<title>headInv</title> <title>headWatch</title>
<ellipse fill="none" stroke="#000000" cx="1420.8112" cy="-188.6102" rx="73.387" ry="18"/> <ellipse fill="none" stroke="#000000" cx="1319.2046" cy="-209.8234" rx="80.6858" ry="18"/>
<text text-anchor="middle" x="1420.8112" y="-184.9102" font-family="Times,serif" font-size="14.00" fill="#000000">#blk ← head/inv.</text> <text text-anchor="middle" x="1319.2046" y="-206.1234" font-family="Times,serif" font-size="14.00" fill="#000000">#blk ← head/watch</text>
</g> </g>
<!-- wcfsRead&#45;&gt;headInv --> <!-- wcfsRead&#45;&gt;headWatch -->
<g id="edge19" class="edge"> <g id="edge20" class="edge">
<title>wcfsRead&#45;&gt;headInv</title> <title>wcfsRead&#45;&gt;headWatch</title>
<path fill="none" stroke="#000000" d="M1158.3127,-267.7634C1202.1519,-255.6007 1275.8545,-234.8246 1338.8112,-215.4802 1348.0578,-212.6391 1357.8566,-209.5217 1367.3409,-206.4482"/> <path fill="none" stroke="#000000" d="M1167.2854,-285.1452C1196.8805,-270.4719 1243.0675,-247.5723 1276.75,-230.8724"/>
<polygon fill="#000000" stroke="#000000" points="1368.6518,-209.7022 1377.0742,-203.2746 1366.4818,-203.047 1368.6518,-209.7022"/> <polygon fill="#000000" stroke="#000000" points="1278.4898,-233.9164 1285.8944,-226.3386 1275.3804,-227.645 1278.4898,-233.9164"/>
</g> </g>
<!-- fs1_go_inv --> <!-- fs1_go_inv -->
<g id="node13" class="node"> <g id="node14" class="node">
<title>fs1_go_inv</title> <title>fs1_go_inv</title>
<ellipse fill="#f2f2f2" stroke="#000000" cx="326.8112" cy="-98.8701" rx="60.623" ry="26.7407"/> <ellipse fill="#f2f2f2" stroke="#000000" cx="733.2046" cy="-109.4767" rx="60.623" ry="26.7407"/>
<text text-anchor="middle" x="326.8112" y="-102.6701" font-family="Times,serif" font-size="14.00" fill="#000000">fs1/go</text> <text text-anchor="middle" x="733.2046" y="-113.2767" font-family="Times,serif" font-size="14.00" fill="#000000">fs1/go</text>
<text text-anchor="middle" x="326.8112" y="-87.6701" font-family="Times,serif" font-size="14.00" fill="#000000">invalidations</text> <text text-anchor="middle" x="733.2046" y="-98.2767" font-family="Times,serif" font-size="14.00" fill="#000000">invalidations</text>
</g> </g>
<!-- ZODB_go_inv&#45;&gt;fs1_go_inv --> <!-- ZODB_go_inv&#45;&gt;fs1_go_inv -->
<g id="edge12" class="edge"> <g id="edge13" class="edge">
<title>ZODB_go_inv&#45;&gt;fs1_go_inv</title> <title>ZODB_go_inv&#45;&gt;fs1_go_inv</title>
<path fill="none" stroke="#000000" d="M325.4112,-161.6852C325.5912,-153.6102 325.7919,-144.607 325.9838,-135.9961"/> <path fill="none" stroke="#000000" d="M512.5558,-191.7476C520.7165,-188.6861 529.1793,-185.6343 537.2046,-182.9533 592.4446,-164.4997 609.2254,-168.8222 663.2046,-146.9533 671.1937,-143.7167 679.4564,-139.8252 687.3824,-135.7919"/>
<polygon fill="#000000" stroke="#000000" points="329.4878,-135.8516 326.2115,-125.776 322.4895,-135.6955 329.4878,-135.8516"/> <polygon fill="#000000" stroke="#000000" points="689.2584,-138.7605 696.4956,-131.0227 686.0127,-132.5584 689.2584,-138.7605"/>
</g> </g>
<!-- zeo_go_inv --> <!-- zeo_go_inv -->
<g id="node14" class="node"> <g id="node15" class="node">
<title>zeo_go_inv</title> <title>zeo_go_inv</title>
<ellipse fill="none" stroke="#000000" cx="466.8112" cy="-98.8701" rx="60.623" ry="26.7407"/> <ellipse fill="none" stroke="#000000" cx="327.2046" cy="-109.4767" rx="60.623" ry="26.7407"/>
<text text-anchor="middle" x="466.8112" y="-102.6701" font-family="Times,serif" font-size="14.00" fill="#000000">zeo/go</text> <text text-anchor="middle" x="327.2046" y="-113.2767" font-family="Times,serif" font-size="14.00" fill="#000000">zeo/go</text>
<text text-anchor="middle" x="466.8112" y="-87.6701" font-family="Times,serif" font-size="14.00" fill="#000000">invalidations</text> <text text-anchor="middle" x="327.2046" y="-98.2767" font-family="Times,serif" font-size="14.00" fill="#000000">invalidations</text>
</g> </g>
<!-- ZODB_go_inv&#45;&gt;zeo_go_inv --> <!-- ZODB_go_inv&#45;&gt;zeo_go_inv -->
<g id="edge13" class="edge"> <g id="edge14" class="edge">
<title>ZODB_go_inv&#45;&gt;zeo_go_inv</title> <title>ZODB_go_inv&#45;&gt;zeo_go_inv</title>
<path fill="none" stroke="#000000" d="M359.9123,-166.4272C379.0279,-154.3467 402.8549,-139.2887 423.1594,-126.4568"/> <path fill="none" stroke="#000000" d="M435.0858,-186.8018C414.9882,-172.3967 388.9291,-153.7185 367.4574,-138.3284"/>
<polygon fill="#000000" stroke="#000000" points="425.0381,-129.4099 431.6217,-121.1088 421.2985,-123.4925 425.0381,-129.4099"/> <polygon fill="#000000" stroke="#000000" points="369.3408,-135.3721 359.174,-132.3911 365.2628,-141.0616 369.3408,-135.3721"/>
</g> </g>
<!-- neo_go_inv --> <!-- neo_go_inv -->
<g id="node15" class="node"> <g id="node16" class="node">
<title>neo_go_inv</title> <title>neo_go_inv</title>
<ellipse fill="none" stroke="#000000" cx="60.8112" cy="-98.8701" rx="60.623" ry="26.7407"/> <ellipse fill="none" stroke="#000000" cx="467.2046" cy="-109.4767" rx="60.623" ry="26.7407"/>
<text text-anchor="middle" x="60.8112" y="-102.6701" font-family="Times,serif" font-size="14.00" fill="#000000">neo/go</text> <text text-anchor="middle" x="467.2046" y="-113.2767" font-family="Times,serif" font-size="14.00" fill="#000000">neo/go</text>
<text text-anchor="middle" x="60.8112" y="-87.6701" font-family="Times,serif" font-size="14.00" fill="#000000">invalidations</text> <text text-anchor="middle" x="467.2046" y="-98.2767" font-family="Times,serif" font-size="14.00" fill="#000000">invalidations</text>
</g> </g>
<!-- ZODB_go_inv&#45;&gt;neo_go_inv --> <!-- ZODB_go_inv&#45;&gt;neo_go_inv -->
<g id="edge14" class="edge"> <g id="edge15" class="edge">
<title>ZODB_go_inv&#45;&gt;neo_go_inv</title> <title>ZODB_go_inv&#45;&gt;neo_go_inv</title>
<path fill="none" stroke="#000000" d="M274.7254,-173.1826C235.4057,-160.8778 179.3773,-142.9172 130.8112,-125.7401 126.025,-124.0473 121.0724,-122.2466 116.1154,-120.4103"/> <path fill="none" stroke="#000000" d="M467.2046,-182.9323C467.2046,-171.7967 467.2046,-158.6951 467.2046,-146.6635"/>
<polygon fill="#000000" stroke="#000000" points="117.2119,-117.0836 106.6195,-116.8539 114.7567,-123.6389 117.2119,-117.0836"/> <polygon fill="#000000" stroke="#000000" points="470.7047,-146.4419 467.2046,-136.442 463.7047,-146.442 470.7047,-146.4419"/>
</g> </g>
<!-- zcache_go_inv --> <!-- zcache_go_inv -->
<g id="node16" class="node"> <g id="node17" class="node">
<title>zcache_go_inv</title> <title>zcache_go_inv</title>
<ellipse fill="none" stroke="#000000" cx="193.8112" cy="-98.8701" rx="53.9813" ry="26.7407"/> <ellipse fill="none" stroke="#000000" cx="600.2046" cy="-109.4767" rx="53.9813" ry="26.7407"/>
<text text-anchor="middle" x="193.8112" y="-102.6701" font-family="Times,serif" font-size="14.00" fill="#000000">ZCache/go</text> <text text-anchor="middle" x="600.2046" y="-113.2767" font-family="Times,serif" font-size="14.00" fill="#000000">ZCache/go</text>
<text text-anchor="middle" x="193.8112" y="-87.6701" font-family="Times,serif" font-size="14.00" fill="#000000">&lt;&#45;watchq</text> <text text-anchor="middle" x="600.2046" y="-98.2767" font-family="Times,serif" font-size="14.00" fill="#000000">watchq</text>
</g> </g>
<!-- ZODB_go_inv&#45;&gt;zcache_go_inv --> <!-- ZODB_go_inv&#45;&gt;zcache_go_inv -->
<g id="edge15" class="edge"> <g id="edge16" class="edge">
<title>ZODB_go_inv&#45;&gt;zcache_go_inv</title> <title>ZODB_go_inv&#45;&gt;zcache_go_inv</title>
<path fill="none" stroke="#000000" d="M291.7544,-165.965C274.1388,-153.8976 252.3349,-138.9611 233.7745,-126.2465"/> <path fill="none" stroke="#000000" d="M498.0517,-186.5496C517.2061,-172.0979 541.9634,-153.4189 562.308,-138.0691"/>
<polygon fill="#000000" stroke="#000000" points="235.7297,-123.3434 225.5017,-120.5793 231.7736,-129.1183 235.7297,-123.3434"/> <polygon fill="#000000" stroke="#000000" points="564.5648,-140.7509 570.4396,-131.9339 560.3488,-135.1629 564.5648,-140.7509"/>
</g> </g>
<!-- zblk2file --> <!-- zblk2file -->
<g id="node20" class="node"> <g id="node21" class="node">
<title>zblk2file</title> <title>zblk2file</title>
<ellipse fill="#f2f2f2" stroke="#000000" cx="632.8112" cy="-98.8701" rx="83.3857" ry="18"/> <ellipse fill="#f2f2f2" stroke="#000000" cx="50.2046" cy="-109.4767" rx="50.41" ry="37.4533"/>
<text text-anchor="middle" x="632.8112" y="-95.1701" font-family="Times,serif" font-size="14.00" fill="#000000">ZBlk* → file/[]#blk</text> <text text-anchor="middle" x="50.2046" y="-120.7767" font-family="Times,serif" font-size="14.00" fill="#000000">ZBlk*</text>
<text text-anchor="middle" x="50.2046" y="-105.7767" font-family="Times,serif" font-size="14.00" fill="#000000"></text>
<text text-anchor="middle" x="50.2046" y="-90.7767" font-family="Times,serif" font-size="14.00" fill="#000000">file/[]#blk</text>
</g> </g>
<!-- zobj2file&#45;&gt;zblk2file --> <!-- zobj2file&#45;&gt;zblk2file -->
<g id="edge20" class="edge"> <g id="edge21" class="edge">
<title>zobj2file&#45;&gt;zblk2file</title> <title>zobj2file&#45;&gt;zblk2file</title>
<path fill="none" stroke="#000000" d="M634.4065,-170.4499C634.1299,-158.043 633.758,-141.3523 633.4428,-127.209"/> <path fill="none" stroke="#000000" d="M160.3411,-192.5732C142.0844,-178.7987 115.9716,-159.097 93.7543,-142.3343"/>
<polygon fill="#000000" stroke="#000000" points="636.9373,-126.9228 633.2153,-117.0033 629.9391,-127.0788 636.9373,-126.9228"/> <polygon fill="#000000" stroke="#000000" points="95.8578,-139.5369 85.7669,-136.308 91.6417,-145.1249 95.8578,-139.5369"/>
</g> </g>
<!-- zbtree2file --> <!-- zbtree2file -->
<g id="node21" class="node"> <g id="node22" class="node">
<title>zbtree2file</title> <title>zbtree2file</title>
<ellipse fill="none" stroke="#000000" cx="843.8112" cy="-98.8701" rx="109.6807" ry="18"/> <ellipse fill="none" stroke="#000000" cx="183.2046" cy="-109.4767" rx="65.1077" ry="37.4533"/>
<text text-anchor="middle" x="843.8112" y="-95.1701" font-family="Times,serif" font-size="14.00" fill="#000000">BTree/Bucket → file/[]#blk</text> <text text-anchor="middle" x="183.2046" y="-120.7767" font-family="Times,serif" font-size="14.00" fill="#000000">BTree/Bucket</text>
<text text-anchor="middle" x="183.2046" y="-105.7767" font-family="Times,serif" font-size="14.00" fill="#000000"></text>
<text text-anchor="middle" x="183.2046" y="-90.7767" font-family="Times,serif" font-size="14.00" fill="#000000">file/[]#blk</text>
</g> </g>
<!-- zobj2file&#45;&gt;zbtree2file --> <!-- zobj2file&#45;&gt;zbtree2file -->
<g id="edge21" class="edge"> <g id="edge22" class="edge">
<title>zobj2file&#45;&gt;zbtree2file</title> <title>zobj2file&#45;&gt;zbtree2file</title>
<path fill="none" stroke="#000000" d="M671.2162,-172.9786C705.6095,-158.2109 757.4333,-135.9589 795.3179,-119.692"/> <path fill="none" stroke="#000000" d="M183.2046,-191.4182C183.2046,-181.7819 183.2046,-169.4895 183.2046,-157.3745"/>
<polygon fill="#000000" stroke="#000000" points="796.8224,-122.8551 804.6302,-115.6935 794.0605,-116.423 796.8224,-122.8551"/> <polygon fill="#000000" stroke="#000000" points="186.7047,-157.3017 183.2046,-147.3017 179.7047,-157.3018 186.7047,-157.3017"/>
</g>
<!-- fileSock -->
<g id="node26" class="node">
<title>fileSock</title>
<ellipse fill="none" stroke="#000000" cx="1088.2046" cy="-109.4767" rx="42.4939" ry="18"/>
<text text-anchor="middle" x="1088.2046" y="-105.7767" font-family="Times,serif" font-size="14.00" fill="#000000">FileSock</text>
</g>
<!-- _wcfs_zhead&#45;&gt;fileSock -->
<g id="edge30" class="edge">
<title>_wcfs_zhead&#45;&gt;fileSock</title>
<path fill="none" stroke="#000000" d="M884.249,-192.2985C889.762,-189.015 895.5941,-185.7422 901.2046,-182.9533 948.9451,-159.2221 1006.3368,-137.6367 1044.8381,-124.0939"/>
<polygon fill="#000000" stroke="#000000" points="1046.3966,-127.2573 1054.6869,-120.6602 1044.092,-120.6475 1046.3966,-127.2573"/>
</g>
<!-- headWatch&#45;&gt;fileSock -->
<g id="edge29" class="edge">
<title>headWatch&#45;&gt;fileSock</title>
<path fill="none" stroke="#000000" d="M1282.3465,-193.8122C1239.9515,-175.3957 1170.6358,-145.2849 1127.3142,-126.4659"/>
<polygon fill="#000000" stroke="#000000" points="1128.5204,-123.174 1117.9539,-122.3998 1125.7314,-129.5944 1128.5204,-123.174"/>
</g> </g>
<!-- δBTree --> <!-- δBTree -->
<g id="node22" class="node"> <g id="node23" class="node">
<title>δBTree</title> <title>δBTree</title>
<ellipse fill="none" stroke="#000000" cx="843.8112" cy="-18" rx="43.5923" ry="18"/> <ellipse fill="none" stroke="#000000" cx="183.2046" cy="-18" rx="43.5923" ry="18"/>
<text text-anchor="middle" x="843.8112" y="-14.3" font-family="Times,serif" font-size="14.00" fill="#000000">δ(BTree)</text> <text text-anchor="middle" x="183.2046" 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="edge22" class="edge"> <g id="edge23" class="edge">
<title>zbtree2file&#45;&gt;δBTree</title> <title>zbtree2file&#45;&gt;δBTree</title>
<path fill="none" stroke="#000000" d="M843.8112,-80.5194C843.8112,-70.4898 843.8112,-57.8453 843.8112,-46.5565"/> <path fill="none" stroke="#000000" d="M183.2046,-71.7415C183.2046,-63.3502 183.2046,-54.5881 183.2046,-46.6326"/>
<polygon fill="#000000" stroke="#000000" points="847.3113,-46.278 843.8112,-36.278 840.3113,-46.2781 847.3113,-46.278"/> <polygon fill="#000000" stroke="#000000" points="186.7047,-46.3947 183.2046,-36.3948 179.7047,-46.3948 186.7047,-46.3947"/>
</g> </g>
<!-- clientInvHandle&#45;&gt;headInv --> <!-- clientInvHandle&#45;&gt;headWatch -->
<g id="edge27" class="edge"> <g id="edge28" class="edge">
<title>clientInvHandle&#45;&gt;headInv</title> <title>clientInvHandle&#45;&gt;headWatch</title>
<path fill="none" stroke="#000000" d="M1375.6671,-251.9107C1384.0117,-240.21 1393.7996,-226.4855 1402.1245,-214.8125"/> <path fill="none" stroke="#000000" d="M1296.1057,-272.6385C1300.1756,-261.5708 1304.8868,-248.759 1308.9889,-237.604"/>
<polygon fill="#000000" stroke="#000000" points="1405.2005,-216.5272 1408.1573,-206.3533 1399.5013,-212.4627 1405.2005,-216.5272"/> <polygon fill="#000000" stroke="#000000" points="1312.3824,-238.5164 1312.5489,-227.9229 1305.8125,-236.1004 1312.3824,-238.5164"/>
</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