Commit b87160d5 authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent cd7fce8c
......@@ -14,11 +14,12 @@ digraph {
// wcfs -> wcfs_simple;
// wcfs -> Sinvtree;
// wcfs -> δR;
wcfs -> autoexit;
wcfs -> liveCacheControl;
wcfs -> autoexit [color=grey];
wcfs -> wcfsInvProcess;
wcfs -> wcfsRead;
wcfs -> wcfsGC;
wcfs -> wcfsGC [color=grey];
wcfsInvProcess -> ZODB_go_inv;
wcfsInvProcess -> zconnCacheGet;
......@@ -30,7 +31,7 @@ digraph {
ZODB_go_inv -> fs1_go_inv;
ZODB_go_inv -> zeo_go_inv;
ZODB_go_inv -> neo_go_inv;
ZODB_go_inv -> zcache_go_inv;
ZODB_go_inv -> zcache_go_inv [style=dashed, color=grey]; // wcfs works without raw cache now
wcfsRead -> blktabGet;
wcfsRead -> δFtail;
......@@ -41,7 +42,7 @@ digraph {
zobj2file -> zblk2file;
zobj2file -> zbtree2file;
zbtree2file -> δBTree;
zbtree2file -> δBTree [color=grey];
// wcfs_simple -> Btree_read;
// wcfs_simple -> ZBlk_read;
......@@ -69,34 +70,34 @@ digraph {
// wcfs_simple [label="wcfs no\ninvalidations", style=filled fillcolor=grey95]
// wcfs_spawn [label="spawn wcfs", style=filled fillcolor=lightyellow]
nowcfs [label="!wcfs mode"]
nowcfs [label="!wcfs mode", style=filled fillcolor=grey95]
wcfsInvProcess [label="process\nZODB invalidations"]
zconnCacheGet [label="zonn.\n.Cache.Get", style=filled fillcolor=grey95]
zobj2file [label="Z* → file/[]#blk"]
zblk2file [label="ZBlk*\n↓\nfile/[]#blk", style=filled fillcolor=grey95]
wcfsInvProcess [label="process\nZODB invalidations", style=filled fillcolor=grey95]
zconnCacheGet [label="zonn.\n.Cache.Get", style=filled fillcolor=lightyellow]
zobj2file [label="Z* → file/[]#blk", style=filled fillcolor=grey95]
zblk2file [label="ZBlk*\n↓\nfile/[]#blk", style=filled fillcolor=lightyellow]
zbtree2file [label="BTree/Bucket\n↓\nfile/[]#blk"]
δBTree [label="δ(BTree)"]
fuseRetrieveCache [label="FUSE:\nretrieve cache", style=filled fillcolor=lightyellow]
_wcfs_zhead [label=".wcfs/\nzhead", style=filled fillcolor=grey95]
_wcfs_zhead [label=".wcfs/\nzhead", style=filled fillcolor=lightyellow]
wcfsRead [label="read(#blk)"]
blktabGet [label="blktab.Get(#blk):\nmanually + → ⌈rev(#blk)⌉"]
δFtail [style=filled fillcolor=grey95]
δFtail [style=filled fillcolor=lightyellow]
mappingRegister [label="mmappings:\nregister/maint"]
clientInvHandle [label="process\n#blk invalidations"]
headWatch [label="#blk ← head/watch"]
fileSock [label="FileSock", style=filled fillcolor=grey95]
fileSock [label="FileSock", style=filled fillcolor=lightyellow]
ZODB_go_inv [label="ZODB/go\ninvalidations"]
fs1_go_inv [label="fs1/go\ninvalidations", style=filled fillcolor=grey95]
ZODB_go_inv [label="ZODB/go\ninvalidations", style=filled fillcolor=grey95]
fs1_go_inv [label="fs1/go\ninvalidations", style=filled fillcolor=lightyellow]
zeo_go_inv [label="zeo/go\ninvalidations"]
neo_go_inv [label="neo/go\ninvalidations"]
zcache_go_inv [label="ZCache/go\n←watchq"]
zcache_go_inv [label="ZCache/go\n←watchq", color=grey, fontcolor=grey]
// Btree_read [label="BTree 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]
......@@ -108,5 +109,6 @@ digraph {
// zodburl [label="zstor -> zurl", style=filled fillcolor=grey95]
wcfsGC [label="GC\n@rev/"]
liveCacheControl [label="ZODB/go\nLiveCache fix"]
autoexit [label="autoexit\nif !activity"]
}
......@@ -12,310 +12,323 @@
<!-- wcfs -->
<g id="node1" class="node">
<title>wcfs</title>
<ellipse fill="none" stroke="#000000" cx="952.2046" cy="-389.3036" rx="27.0966" ry="18"/>
<text text-anchor="middle" x="952.2046" y="-385.6036" font-family="Times,serif" font-size="14.00" fill="#000000">wcfs</text>
<ellipse fill="none" stroke="#000000" cx="875.2046" cy="-389.3036" rx="27.0966" ry="18"/>
<text text-anchor="middle" x="875.2046" y="-385.6036" font-family="Times,serif" font-size="14.00" fill="#000000">wcfs</text>
</g>
<!-- invProto -->
<g id="node2" class="node">
<title>invProto</title>
<ellipse fill="#f2f2f2" stroke="#000000" cx="1131.2046" cy="-389.3036" rx="78.4777" ry="26.7407"/>
<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="1131.2046" y="-378.1036" font-family="Times,serif" font-size="14.00" fill="#000000">protocol</text>
<ellipse fill="#f2f2f2" stroke="#000000" cx="1070.2046" cy="-389.3036" rx="78.4777" ry="26.7407"/>
<text text-anchor="middle" x="1070.2046" y="-393.1036" font-family="Times,serif" font-size="14.00" fill="#000000">open/invalidation</text>
<text text-anchor="middle" x="1070.2046" y="-378.1036" 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="M979.8237,-389.3036C1000.6589,-389.3036 1021.4941,-389.3036 1042.3293,-389.3036"/>
<polygon fill="#000000" stroke="#000000" points="1042.5575,-392.8037 1052.5575,-389.3036 1042.5575,-385.8037 1042.5575,-392.8037"/>
<path fill="none" stroke="#000000" d="M902.6265,-389.3036C928.9401,-389.3036 955.2537,-389.3036 981.5674,-389.3036"/>
<polygon fill="#000000" stroke="#000000" points="981.6524,-392.8037 991.6523,-389.3036 981.6523,-385.8037 981.6524,-392.8037"/>
</g>
<!-- autoexit -->
<!-- liveCacheControl -->
<g id="node4" class="node">
<title>liveCacheControl</title>
<ellipse fill="none" stroke="#000000" cx="506.2046" cy="-299.5635" rx="66.4361" ry="26.7407"/>
<text text-anchor="middle" x="506.2046" y="-303.3635" font-family="Times,serif" font-size="14.00" fill="#000000">ZODB/go</text>
<text text-anchor="middle" x="506.2046" y="-288.3635" font-family="Times,serif" font-size="14.00" fill="#000000">LiveCache fix</text>
</g>
<!-- wcfs&#45;&gt;liveCacheControl -->
<g id="edge3" class="edge">
<title>wcfs&#45;&gt;liveCacheControl</title>
<path fill="none" stroke="#000000" d="M848.6614,-384.7899C796.9026,-375.7292 679.0756,-353.8286 582.2046,-326.4335 576.5107,-324.8233 570.6245,-323.012 564.7648,-321.11"/>
<polygon fill="#000000" stroke="#000000" points="565.5607,-317.686 554.9671,-317.8428 563.3463,-324.3265 565.5607,-317.686"/>
</g>
<!-- autoexit -->
<g id="node5" class="node">
<title>autoexit</title>
<ellipse fill="none" stroke="#000000" cx="603.2046" cy="-299.5635" rx="52.1524" ry="26.7407"/>
<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="603.2046" y="-288.3635" font-family="Times,serif" font-size="14.00" fill="#000000">if !activity</text>
<ellipse fill="none" stroke="#000000" cx="643.2046" cy="-299.5635" rx="52.1524" ry="26.7407"/>
<text text-anchor="middle" x="643.2046" y="-303.3635" font-family="Times,serif" font-size="14.00" fill="#000000">autoexit</text>
<text text-anchor="middle" x="643.2046" y="-288.3635" font-family="Times,serif" font-size="14.00" fill="#000000">if !activity</text>
</g>
<!-- wcfs&#45;&gt;autoexit -->
<g id="edge3" class="edge">
<g id="edge4" class="edge">
<title>wcfs&#45;&gt;autoexit</title>
<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="652.3843,-318.4661 641.8021,-317.9484 649.7518,-324.9523 652.3843,-318.4661"/>
<path fill="none" stroke="#c0c0c0" d="M850.9517,-380.9253C817.6426,-369.2964 755.9745,-347.3287 704.2046,-326.4335 700.281,-324.8499 696.2339,-323.1706 692.1786,-321.4551"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="693.3256,-318.1388 682.7555,-317.4149 690.5671,-324.5724 693.3256,-318.1388"/>
</g>
<!-- wcfsInvProcess -->
<g id="node5" class="node">
<g id="node6" class="node">
<title>wcfsInvProcess</title>
<ellipse fill="none" stroke="#000000" cx="763.2046" cy="-299.5635" rx="89.6056" ry="26.7407"/>
<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="763.2046" y="-288.3635" font-family="Times,serif" font-size="14.00" fill="#000000">ZODB invalidations</text>
<ellipse fill="#f2f2f2" stroke="#000000" cx="803.2046" cy="-299.5635" rx="89.6056" ry="26.7407"/>
<text text-anchor="middle" x="803.2046" y="-303.3635" font-family="Times,serif" font-size="14.00" fill="#000000">process</text>
<text text-anchor="middle" x="803.2046" y="-288.3635" font-family="Times,serif" font-size="14.00" fill="#000000">ZODB invalidations</text>
</g>
<!-- wcfs&#45;&gt;wcfsInvProcess -->
<g id="edge4" class="edge">
<g id="edge5" class="edge">
<title>wcfs&#45;&gt;wcfsInvProcess</title>
<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="821.8272,-323.524 811.2926,-322.3964 818.8248,-329.8474 821.8272,-323.524"/>
<path fill="none" stroke="#000000" d="M862.3324,-373.2599C853.6233,-362.4049 841.7825,-347.6467 830.9842,-334.1877"/>
<polygon fill="#000000" stroke="#000000" points="833.4207,-331.6316 824.4327,-326.022 827.9607,-336.0122 833.4207,-331.6316"/>
</g>
<!-- wcfsRead -->
<g id="node6" class="node">
<g id="node7" class="node">
<title>wcfsRead</title>
<ellipse fill="none" stroke="#000000" cx="1138.2046" cy="-299.5635" rx="47.3916" ry="18"/>
<text text-anchor="middle" x="1138.2046" y="-295.8635" font-family="Times,serif" font-size="14.00" fill="#000000">read(#blk)</text>
<ellipse fill="none" stroke="#000000" cx="1105.2046" cy="-299.5635" rx="47.3916" ry="18"/>
<text text-anchor="middle" x="1105.2046" y="-295.8635" font-family="Times,serif" font-size="14.00" fill="#000000">read(#blk)</text>
</g>
<!-- wcfs&#45;&gt;wcfsRead -->
<g id="edge5" class="edge">
<g id="edge6" class="edge">
<title>wcfs&#45;&gt;wcfsRead</title>
<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="1101.3429,-321.2344 1108.8286,-313.7367 1098.3011,-314.9298 1101.3429,-321.2344"/>
<path fill="none" stroke="#000000" d="M898.9523,-380.0378C937.5007,-364.9973 1014.2273,-335.0605 1062.4563,-316.2428"/>
<polygon fill="#000000" stroke="#000000" points="1063.9529,-319.4159 1071.9967,-312.5204 1061.4084,-312.8947 1063.9529,-319.4159"/>
</g>
<!-- wcfsGC -->
<g id="node7" class="node">
<g id="node8" class="node">
<title>wcfsGC</title>
<ellipse fill="none" stroke="#000000" cx="952.2046" cy="-299.5635" rx="35.2113" ry="26.7407"/>
<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="952.2046" y="-288.3635" font-family="Times,serif" font-size="14.00" fill="#000000">@rev/</text>
<ellipse fill="none" stroke="#000000" cx="946.2046" cy="-299.5635" rx="35.2113" ry="26.7407"/>
<text text-anchor="middle" x="946.2046" y="-303.3635" font-family="Times,serif" font-size="14.00" fill="#000000">GC</text>
<text text-anchor="middle" x="946.2046" y="-288.3635" font-family="Times,serif" font-size="14.00" fill="#000000">@rev/</text>
</g>
<!-- wcfs&#45;&gt;wcfsGC -->
<g id="edge6" class="edge">
<g id="edge7" class="edge">
<title>wcfs&#45;&gt;wcfsGC</title>
<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="955.7047,-336.5531 952.2046,-326.5531 948.7047,-336.5532 955.7047,-336.5531"/>
<path fill="none" stroke="#c0c0c0" d="M887.898,-373.2599C897.1673,-361.5439 910.0342,-345.2809 921.3232,-331.0122"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="924.2887,-332.9049 927.7485,-322.8909 918.799,-328.5617 924.2887,-332.9049"/>
</g>
<!-- client -->
<g id="node3" class="node">
<title>client</title>
<ellipse fill="none" stroke="#000000" cx="1286.2046" cy="-389.3036" rx="30.5947" ry="18"/>
<text text-anchor="middle" x="1286.2046" y="-385.6036" font-family="Times,serif" font-size="14.00" fill="#000000">client</text>
<ellipse fill="none" stroke="#000000" cx="1251.2046" cy="-389.3036" rx="30.5947" ry="18"/>
<text text-anchor="middle" x="1251.2046" y="-385.6036" 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="M1220.2456,-389.3036C1232.0004,-389.3036 1243.7553,-389.3036 1255.5102,-389.3036"/>
<polygon fill="#000000" stroke="#000000" points="1219.9156,-385.8037 1209.9155,-389.3036 1219.9155,-392.8037 1219.9156,-385.8037"/>
<path fill="none" stroke="#000000" d="M1159.0843,-389.3036C1179.5479,-389.3036 1200.0114,-389.3036 1220.475,-389.3036"/>
<polygon fill="#000000" stroke="#000000" points="1159.0386,-385.8037 1149.0386,-389.3036 1159.0385,-392.8037 1159.0386,-385.8037"/>
</g>
<!-- client&#45;&gt;wcfsRead -->
<g id="edge24" class="edge">
<g id="edge25" class="edge">
<title>client&#45;&gt;wcfsRead</title>
<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="1173.8369,-317.0761 1163.4713,-314.884 1170.2075,-323.0617 1173.8369,-317.0761"/>
<path fill="none" stroke="#000000" d="M1229.9749,-376.2546C1206.068,-361.56 1166.8988,-337.4844 1138.8224,-320.227"/>
<polygon fill="#000000" stroke="#000000" points="1140.482,-317.1388 1130.1299,-314.884 1136.8164,-323.1023 1140.482,-317.1388"/>
</g>
<!-- mappingRegister -->
<g id="node19" class="node">
<g id="node20" class="node">
<title>mappingRegister</title>
<ellipse fill="none" stroke="#000000" cx="1483.2046" cy="-209.8234" rx="65.1077" ry="26.7407"/>
<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="1483.2046" y="-198.6234" font-family="Times,serif" font-size="14.00" fill="#000000">register/maint</text>
</g>
<!-- client&#45;&gt;mappingRegister -->
<g id="edge25" class="edge">
<g id="edge26" class="edge">
<title>client&#45;&gt;mappingRegister</title>
<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="1448.8634,-243.1688 1454.0184,-233.9126 1444.2163,-237.9339 1448.8634,-243.1688"/>
<path fill="none" stroke="#000000" d="M1280.7168,-384.5439C1333.2703,-375.4553 1439.8519,-354.0516 1464.2046,-326.4335 1483.1625,-304.9336 1487.0846,-272.1581 1486.7372,-246.824"/>
<polygon fill="#000000" stroke="#000000" points="1490.2349,-246.6935 1486.3786,-236.8254 1483.2394,-246.9444 1490.2349,-246.6935"/>
</g>
<!-- clientInvHandle -->
<g id="node24" class="node">
<g id="node25" class="node">
<title>clientInvHandle</title>
<ellipse fill="none" stroke="#000000" cx="1286.2046" cy="-299.5635" rx="80.7205" ry="26.7407"/>
<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="1286.2046" y="-288.3635" font-family="Times,serif" font-size="14.00" fill="#000000">#blk invalidations</text>
<ellipse fill="none" stroke="#000000" cx="1251.2046" cy="-299.5635" rx="80.7205" ry="26.7407"/>
<text text-anchor="middle" x="1251.2046" y="-303.3635" font-family="Times,serif" font-size="14.00" fill="#000000">process</text>
<text text-anchor="middle" x="1251.2046" y="-288.3635" font-family="Times,serif" font-size="14.00" fill="#000000">#blk invalidations</text>
</g>
<!-- client&#45;&gt;clientInvHandle -->
<g id="edge26" class="edge">
<g id="edge27" class="edge">
<title>client&#45;&gt;clientInvHandle</title>
<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="1289.7047,-336.5531 1286.2046,-326.5531 1282.7047,-336.5532 1289.7047,-336.5531"/>
<path fill="none" stroke="#000000" d="M1251.2046,-371.1434C1251.2046,-361.2404 1251.2046,-348.6082 1251.2046,-336.7207"/>
<polygon fill="#000000" stroke="#000000" points="1254.7047,-336.5531 1251.2046,-326.5531 1247.7047,-336.5532 1254.7047,-336.5531"/>
</g>
<!-- nowcfs -->
<g id="node25" class="node">
<g id="node26" class="node">
<title>nowcfs</title>
<ellipse fill="none" stroke="#000000" cx="1476.2046" cy="-299.5635" rx="52.7911" ry="18"/>
<text text-anchor="middle" x="1476.2046" y="-295.8635" font-family="Times,serif" font-size="14.00" fill="#000000">!wcfs mode</text>
<ellipse fill="#f2f2f2" stroke="#000000" cx="1402.2046" cy="-299.5635" rx="52.7911" ry="18"/>
<text text-anchor="middle" x="1402.2046" y="-295.8635" font-family="Times,serif" font-size="14.00" fill="#000000">!wcfs mode</text>
</g>
<!-- client&#45;&gt;nowcfs -->
<g id="edge27" class="edge">
<g id="edge28" class="edge">
<title>client&#45;&gt;nowcfs</title>
<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="1437.5501,-321.6915 1445.0975,-314.2559 1434.5605,-315.3619 1437.5501,-321.6915"/>
<path fill="none" stroke="#000000" d="M1272.8392,-376.446C1297.449,-361.8203 1337.991,-337.726 1367.1341,-320.4061"/>
<polygon fill="#000000" stroke="#000000" points="1368.974,-323.3841 1375.7823,-315.2664 1365.3977,-317.3666 1368.974,-323.3841"/>
</g>
<!-- ZODB_go_inv -->
<g id="node8" class="node">
<g id="node9" class="node">
<title>ZODB_go_inv</title>
<ellipse fill="none" stroke="#000000" cx="467.2046" cy="-209.8234" rx="60.623" ry="26.7407"/>
<ellipse fill="#f2f2f2" stroke="#000000" cx="467.2046" cy="-209.8234" rx="60.623" ry="26.7407"/>
<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="467.2046" y="-198.6234" font-family="Times,serif" font-size="14.00" fill="#000000">invalidations</text>
</g>
<!-- wcfsInvProcess&#45;&gt;ZODB_go_inv -->
<g id="edge7" class="edge">
<g id="edge8" class="edge">
<title>wcfsInvProcess&#45;&gt;ZODB_go_inv</title>
<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="523.1339,-228.1114 512.5403,-227.9459 520.7185,-234.6815 523.1339,-228.1114"/>
<path fill="none" stroke="#000000" d="M737.563,-281.2265C726.4551,-278.2731 715.0199,-275.3249 704.2046,-272.6934 630.4298,-254.7431 609.974,-258.3626 537.2046,-236.6934 532.0582,-235.161 526.7529,-233.4247 521.4735,-231.5901"/>
<polygon fill="#000000" stroke="#000000" points="522.6329,-228.2877 512.0384,-228.2045 520.2686,-234.8764 522.6329,-228.2877"/>
</g>
<!-- zconnCacheGet -->
<g id="node9" class="node">
<g id="node10" class="node">
<title>zconnCacheGet</title>
<ellipse fill="#f2f2f2" stroke="#000000" cx="749.2046" cy="-209.8234" rx="54.3945" ry="26.7407"/>
<ellipse fill="#ffffe0" stroke="#000000" cx="749.2046" cy="-209.8234" rx="54.3945" ry="26.7407"/>
<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>
<!-- wcfsInvProcess&#45;&gt;zconnCacheGet -->
<g id="edge8" class="edge">
<g id="edge9" class="edge">
<title>wcfsInvProcess&#45;&gt;zconnCacheGet</title>
<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="758.4017,-246.0703 753.4021,-236.7294 751.4854,-247.1494 758.4017,-246.0703"/>
<path fill="none" stroke="#000000" d="M787.0028,-272.6385C781.6822,-263.7964 775.6918,-253.8412 770.075,-244.5069"/>
<polygon fill="#000000" stroke="#000000" points="772.9932,-242.5682 764.8383,-235.8044 766.9954,-246.1774 772.9932,-242.5682"/>
</g>
<!-- zobj2file -->
<g id="node10" class="node">
<g id="node11" class="node">
<title>zobj2file</title>
<ellipse fill="none" stroke="#000000" cx="183.2046" cy="-209.8234" rx="70.3881" ry="18"/>
<ellipse fill="#f2f2f2" stroke="#000000" cx="183.2046" cy="-209.8234" rx="70.3881" ry="18"/>
<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>
<!-- wcfsInvProcess&#45;&gt;zobj2file -->
<g id="edge9" class="edge">
<g id="edge10" class="edge">
<title>wcfsInvProcess&#45;&gt;zobj2file</title>
<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="256.632,-215.6282 246.2699,-217.8367 255.7476,-222.5721 256.632,-215.6282"/>
<path fill="none" stroke="#000000" d="M739.0912,-280.6782C727.5469,-277.7029 715.5704,-274.8897 704.2046,-272.6934 569.3204,-246.6294 533.5825,-253.2511 397.2046,-236.6934 350.3303,-231.0024 297.7099,-224.3982 256.3779,-219.1614"/>
<polygon fill="#000000" stroke="#000000" points="256.7549,-215.6812 246.394,-217.8952 255.8741,-222.6256 256.7549,-215.6812"/>
</g>
<!-- δFtail -->
<g id="node11" class="node">
<g id="node12" class="node">
<title>δFtail</title>
<ellipse fill="#f2f2f2" stroke="#000000" cx="942.2046" cy="-209.8234" rx="31.6951" ry="18"/>
<ellipse fill="#ffffe0" stroke="#000000" cx="942.2046" cy="-209.8234" rx="31.6951" ry="18"/>
<text text-anchor="middle" x="942.2046" y="-206.1234" font-family="Times,serif" font-size="14.00" fill="#000000">δFtail</text>
</g>
<!-- wcfsInvProcess&#45;&gt;δFtail -->
<g id="edge10" class="edge">
<g id="edge11" class="edge">
<title>wcfsInvProcess&#45;&gt;δFtail</title>
<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="915.6376,-232.2065 922.1452,-223.8458 911.8442,-226.3235 915.6376,-232.2065"/>
<path fill="none" stroke="#000000" d="M841.423,-275.1669C859.5643,-263.5554 881.5304,-249.4507 901.2046,-236.6934 905.0025,-234.2307 908.9921,-231.6315 912.9298,-229.0587"/>
<polygon fill="#000000" stroke="#000000" points="914.9226,-231.9375 921.3725,-223.5322 911.0887,-226.0807 914.9226,-231.9375"/>
</g>
<!-- fuseRetrieveCache -->
<g id="node12" class="node">
<g id="node13" class="node">
<title>fuseRetrieveCache</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="611.2046" cy="-209.8234" rx="65.1077" ry="26.7407"/>
<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="611.2046" y="-198.6234" font-family="Times,serif" font-size="14.00" fill="#000000">retrieve cache</text>
</g>
<!-- wcfsInvProcess&#45;&gt;fuseRetrieveCache -->
<g id="edge11" class="edge">
<g id="edge12" class="edge">
<title>wcfsInvProcess&#45;&gt;fuseRetrieveCache</title>
<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="659.0509,-234.0072 648.6603,-231.9371 655.4921,-240.035 659.0509,-234.0072"/>
<path fill="none" stroke="#000000" d="M754.7549,-276.9183C727.0082,-263.9496 692.1716,-247.6671 663.7652,-234.39"/>
<polygon fill="#000000" stroke="#000000" points="664.9391,-231.0753 654.3978,-230.0117 661.9751,-237.4168 664.9391,-231.0753"/>
</g>
<!-- _wcfs_zhead -->
<g id="node13" class="node">
<g id="node14" class="node">
<title>_wcfs_zhead</title>
<ellipse fill="#f2f2f2" stroke="#000000" cx="857.2046" cy="-209.8234" rx="35.2113" ry="26.7407"/>
<ellipse fill="#ffffe0" 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">
<g id="edge13" 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"/>
<path fill="none" stroke="#000000" d="M819.4064,-272.6385C825.0197,-263.31 831.3785,-252.7425 837.2576,-242.9723"/>
<polygon fill="#000000" stroke="#000000" points="840.3297,-244.6552 842.4867,-234.2823 834.3319,-241.0461 840.3297,-244.6552"/>
</g>
<!-- wcfsRead&#45;&gt;δFtail -->
<g id="edge18" class="edge">
<g id="edge19" class="edge">
<title>wcfsRead&#45;&gt;δFtail</title>
<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="972.3312,-226.8852 962.0466,-224.3397 968.4991,-232.7431 972.3312,-226.8852"/>
<path fill="none" stroke="#000000" d="M1075.3491,-285.5388C1050.106,-273.3899 1013.2056,-254.9415 982.2046,-236.6934 978.4736,-234.4973 974.6165,-232.091 970.8368,-229.6493"/>
<polygon fill="#000000" stroke="#000000" points="972.5244,-226.5692 962.2533,-223.9699 968.6617,-232.407 972.5244,-226.5692"/>
</g>
<!-- blktabGet -->
<g id="node18" class="node">
<g id="node19" class="node">
<title>blktabGet</title>
<ellipse fill="none" stroke="#000000" cx="1106.2046" cy="-209.8234" rx="114.6026" ry="26.7407"/>
<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="1106.2046" y="-198.6234" font-family="Times,serif" font-size="14.00" fill="#000000">manually + → ⌈rev(#blk)⌉</text>
</g>
<!-- wcfsRead&#45;&gt;blktabGet -->
<g id="edge17" class="edge">
<g id="edge18" class="edge">
<title>wcfsRead&#45;&gt;blktabGet</title>
<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="1122.4841,-245.0565 1115.8287,-236.813 1115.8908,-247.4077 1122.4841,-245.0565"/>
<path fill="none" stroke="#000000" d="M1105.4069,-281.4032C1105.5173,-271.5002 1105.6581,-258.8681 1105.7905,-246.9806"/>
<polygon fill="#000000" stroke="#000000" points="1109.2921,-246.8514 1105.9038,-236.813 1102.2925,-246.7734 1109.2921,-246.8514"/>
</g>
<!-- wcfsRead&#45;&gt;mappingRegister -->
<g id="edge19" class="edge">
<g id="edge20" class="edge">
<title>wcfsRead&#45;&gt;mappingRegister</title>
<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="1427.4666,-234.948 1435.8385,-228.4548 1425.2446,-228.31 1427.4666,-234.948"/>
<path fill="none" stroke="#000000" d="M1132.165,-284.591C1141.1669,-280.1495 1151.4051,-275.6794 1161.2046,-272.6934 1267.746,-240.2301 1301.1865,-263.8416 1409.2046,-236.6934 1414.8942,-235.2635 1420.7561,-233.5577 1426.5727,-231.7087"/>
<polygon fill="#000000" stroke="#000000" points="1427.8927,-234.9584 1436.2802,-228.4854 1425.6867,-228.315 1427.8927,-234.9584"/>
</g>
<!-- headWatch -->
<g id="node20" class="node">
<g id="node21" class="node">
<title>headWatch</title>
<ellipse fill="none" stroke="#000000" cx="1319.2046" cy="-209.8234" rx="80.6858" ry="18"/>
<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>
<!-- wcfsRead&#45;&gt;headWatch -->
<g id="edge20" class="edge">
<g id="edge21" class="edge">
<title>wcfsRead&#45;&gt;headWatch</title>
<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="1278.4898,-233.9164 1285.8944,-226.3386 1275.3804,-227.645 1278.4898,-233.9164"/>
<path fill="none" stroke="#000000" d="M1134.0944,-285.2354C1142.7553,-281.0666 1152.3156,-276.589 1161.2046,-272.6934 1196.7364,-257.1216 1237.4211,-240.9708 1268.6067,-228.9383"/>
<polygon fill="#000000" stroke="#000000" points="1269.8855,-232.1965 1277.9638,-225.3415 1267.3738,-225.6626 1269.8855,-232.1965"/>
</g>
<!-- fs1_go_inv -->
<g id="node14" class="node">
<g id="node15" class="node">
<title>fs1_go_inv</title>
<ellipse fill="#f2f2f2" stroke="#000000" cx="733.2046" cy="-109.4767" rx="60.623" ry="26.7407"/>
<ellipse fill="#ffffe0" stroke="#000000" cx="733.2046" cy="-109.4767" rx="60.623" ry="26.7407"/>
<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="733.2046" y="-98.2767" font-family="Times,serif" font-size="14.00" fill="#000000">invalidations</text>
</g>
<!-- ZODB_go_inv&#45;&gt;fs1_go_inv -->
<g id="edge13" class="edge">
<g id="edge14" class="edge">
<title>ZODB_go_inv&#45;&gt;fs1_go_inv</title>
<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="689.2584,-138.7605 696.4956,-131.0227 686.0127,-132.5584 689.2584,-138.7605"/>
</g>
<!-- zeo_go_inv -->
<g id="node15" class="node">
<g id="node16" class="node">
<title>zeo_go_inv</title>
<ellipse fill="none" stroke="#000000" cx="327.2046" cy="-109.4767" rx="60.623" ry="26.7407"/>
<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="327.2046" y="-98.2767" font-family="Times,serif" font-size="14.00" fill="#000000">invalidations</text>
</g>
<!-- ZODB_go_inv&#45;&gt;zeo_go_inv -->
<g id="edge14" class="edge">
<g id="edge15" class="edge">
<title>ZODB_go_inv&#45;&gt;zeo_go_inv</title>
<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="369.3408,-135.3721 359.174,-132.3911 365.2628,-141.0616 369.3408,-135.3721"/>
</g>
<!-- neo_go_inv -->
<g id="node16" class="node">
<g id="node17" class="node">
<title>neo_go_inv</title>
<ellipse fill="none" stroke="#000000" cx="467.2046" cy="-109.4767" rx="60.623" ry="26.7407"/>
<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="467.2046" y="-98.2767" font-family="Times,serif" font-size="14.00" fill="#000000">invalidations</text>
</g>
<!-- ZODB_go_inv&#45;&gt;neo_go_inv -->
<g id="edge15" class="edge">
<g id="edge16" class="edge">
<title>ZODB_go_inv&#45;&gt;neo_go_inv</title>
<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="470.7047,-146.4419 467.2046,-136.442 463.7047,-146.442 470.7047,-146.4419"/>
</g>
<!-- zcache_go_inv -->
<g id="node17" class="node">
<g id="node18" class="node">
<title>zcache_go_inv</title>
<ellipse fill="none" stroke="#000000" cx="600.2046" cy="-109.4767" rx="53.9813" ry="26.7407"/>
<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="600.2046" y="-98.2767" font-family="Times,serif" font-size="14.00" fill="#000000">←watchq</text>
<ellipse fill="none" stroke="#c0c0c0" cx="600.2046" cy="-109.4767" rx="53.9813" ry="26.7407"/>
<text text-anchor="middle" x="600.2046" y="-113.2767" font-family="Times,serif" font-size="14.00" fill="#c0c0c0">ZCache/go</text>
<text text-anchor="middle" x="600.2046" y="-98.2767" font-family="Times,serif" font-size="14.00" fill="#c0c0c0">←watchq</text>
</g>
<!-- ZODB_go_inv&#45;&gt;zcache_go_inv -->
<g id="edge16" class="edge">
<g id="edge17" class="edge">
<title>ZODB_go_inv&#45;&gt;zcache_go_inv</title>
<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="564.5648,-140.7509 570.4396,-131.9339 560.3488,-135.1629 564.5648,-140.7509"/>
<path fill="none" stroke="#c0c0c0" stroke-dasharray="5,2" d="M498.0517,-186.5496C517.2061,-172.0979 541.9634,-153.4189 562.308,-138.0691"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="564.5648,-140.7509 570.4396,-131.9339 560.3488,-135.1629 564.5648,-140.7509"/>
</g>
<!-- zblk2file -->
<g id="node21" class="node">
<g id="node22" class="node">
<title>zblk2file</title>
<ellipse fill="#f2f2f2" stroke="#000000" cx="50.2046" cy="-109.4767" rx="50.41" ry="37.4533"/>
<ellipse fill="#ffffe0" stroke="#000000" cx="50.2046" cy="-109.4767" rx="50.41" ry="37.4533"/>
<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>
<!-- zobj2file&#45;&gt;zblk2file -->
<g id="edge21" class="edge">
<g id="edge22" class="edge">
<title>zobj2file&#45;&gt;zblk2file</title>
<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="95.8578,-139.5369 85.7669,-136.308 91.6417,-145.1249 95.8578,-139.5369"/>
</g>
<!-- zbtree2file -->
<g id="node22" class="node">
<g id="node23" class="node">
<title>zbtree2file</title>
<ellipse fill="none" stroke="#000000" cx="183.2046" cy="-109.4767" rx="65.1077" ry="37.4533"/>
<text text-anchor="middle" x="183.2046" y="-120.7767" font-family="Times,serif" font-size="14.00" fill="#000000">BTree/Bucket</text>
......@@ -323,46 +336,46 @@
<text text-anchor="middle" x="183.2046" y="-90.7767" font-family="Times,serif" font-size="14.00" fill="#000000">file/[]#blk</text>
</g>
<!-- zobj2file&#45;&gt;zbtree2file -->
<g id="edge22" class="edge">
<g id="edge23" class="edge">
<title>zobj2file&#45;&gt;zbtree2file</title>
<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="186.7047,-157.3017 183.2046,-147.3017 179.7047,-157.3018 186.7047,-157.3017"/>
</g>
<!-- fileSock -->
<g id="node26" class="node">
<g id="node27" class="node">
<title>fileSock</title>
<ellipse fill="#f2f2f2" stroke="#000000" cx="1088.2046" cy="-109.4767" rx="42.4939" ry="18"/>
<ellipse fill="#ffffe0" 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">
<g id="edge31" 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">
<g id="edge30" 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>
<!-- δBTree -->
<g id="node23" class="node">
<g id="node24" class="node">
<title>δBTree</title>
<ellipse fill="none" stroke="#000000" cx="183.2046" cy="-18" rx="43.5923" ry="18"/>
<text text-anchor="middle" x="183.2046" y="-14.3" font-family="Times,serif" font-size="14.00" fill="#000000">δ(BTree)</text>
</g>
<!-- zbtree2file&#45;&gt;δBTree -->
<g id="edge23" class="edge">
<g id="edge24" class="edge">
<title>zbtree2file&#45;&gt;δBTree</title>
<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="186.7047,-46.3947 183.2046,-36.3948 179.7047,-46.3948 186.7047,-46.3947"/>
<path fill="none" stroke="#c0c0c0" d="M183.2046,-71.7415C183.2046,-63.3502 183.2046,-54.5881 183.2046,-46.6326"/>
<polygon fill="#c0c0c0" stroke="#c0c0c0" points="186.7047,-46.3947 183.2046,-36.3948 179.7047,-46.3948 186.7047,-46.3947"/>
</g>
<!-- clientInvHandle&#45;&gt;headWatch -->
<g id="edge28" class="edge">
<g id="edge29" class="edge">
<title>clientInvHandle&#45;&gt;headWatch</title>
<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="1312.3824,-238.5164 1312.5489,-227.9229 1305.8125,-236.1004 1312.3824,-238.5164"/>
<path fill="none" stroke="#000000" d="M1271.239,-273.1239C1280.129,-261.3917 1290.5608,-247.6248 1299.4214,-235.9314"/>
<polygon fill="#000000" stroke="#000000" points="1302.3012,-237.9261 1305.5511,-227.842 1296.722,-233.6985 1302.3012,-237.9261"/>
</g>
</g>
</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