Whamcloud - gitweb
LUDOC-266 protocol: Initial content for new repository
[doc/protocol.git] / figures / mkdir1.gv
diff --git a/figures/mkdir1.gv b/figures/mkdir1.gv
new file mode 100644 (file)
index 0000000..fd73cbb
--- /dev/null
@@ -0,0 +1,106 @@
+digraph mkdir1 {
+    compound=true;
+    subgraph cluster0 {
+        node [style=filled,color=white];
+        style=filled;
+        cli0 [label="idle client"];
+        cli1 [label="waiting\non mkdir"];
+        cli2 [style=invis];
+        cli3 [style=invis];
+        cli4 [style=invis];
+        cli5 [style=invis];
+        cli6 [style=invis];
+        cli7 [style=invis];
+        cli8 [style=invis];
+        cli0 -> cli1 [label="start\nmkdir"];
+        cli1 -> cli0 [label="mkdir\ncomplete"];
+        label = "client";
+        color=lightgrey;
+    }
+    subgraph cluster1 {
+        node [style=filled,color=white];
+        style=filled;
+        label = "MDS thread";
+        color=lightgrey;
+        mds0 [label="idle\nMDS\nthread"];
+        mds1 [label="mkdir request\nhas arrived"];
+        mds2 [label="lock\nacquired"];
+        mds3 [label="memory\nupdates\ncomplete"];
+        mds7 [label="metadata\nupdate\ncomplete"];
+        mds8 [label="lock\nreleased"];
+       mds0 -> mds1 [label="start\nmkdir"];
+       mds1 -> mds2 [label="lock"];
+       mds2 -> mds3 [label="memory\nupdate\ntransaction"];
+        subgraph cluster4 {
+            node [style=filled,color=white];
+            style=filled;
+            cn4 [label="ready to\nnotify client"];
+            cn5 [label="client\nnotified"];
+            cn4 -> cn5 [label="mkdir\ncomplete"]; 
+            label = "Client notification";
+           color=lightblue;
+        }
+        subgraph cluster5 {
+            node [style=filled,color=white];
+            style=filled;
+            du4 [label="ready to\nwrite to\ndisk"];
+            du5 [label="writing\nto disk"];
+            du6 [label="disk\nwrite\ncomplete"];
+            du4 -> du5 [label="start\nwrite"]; 
+            du5 -> du6 [label="finish\nwrite"]; 
+            label = "Disk Update";
+           color=lightblue;
+        }
+       mds3 -> cn4 [style=dotted,lhead=cluster4];
+       mds3 -> du4 [style=dotted,lhead=cluster5];
+       cn5 -> mds7 [style=dotted,ltail=cluster4];
+       du6 -> mds7  [style=dotted,ltail=cluster5];
+       mds7-> mds8 [label="unlock"];
+       mds8 -> mds0;
+        label = "MDS";
+       color=lightgrey;
+    }
+    subgraph cluster2 {
+        node [style=filled,color=white];
+        style=filled;
+        ldlm0 [label=unlocked];
+        ldlm1 [label="locked"];
+        ldlm2 [style=invis];
+        ldlm3 [style=invis];
+        ldlm4 [style=invis];
+        ldlm5 [style=invis];
+        ldlm6 [style=invis];
+        ldlm7 [style=invis];
+        ldlm8 [style=invis];
+        ldlm0 -> ldlm1 [label="lock"];
+        ldlm1 -> ldlm0 [label="unlock"];
+        label = "LDLM";
+        color=lightgrey;
+    }
+    subgraph cluster3 {
+        node [style=filled,color=white];
+        style=filled;
+        disk0 [label="idle disk"];
+        disk1 [label="active disk"];
+        disk2 [style=invis];
+        disk3 [style=invis];
+        disk4 [style=invis];
+        disk5 [style=invis];
+        disk6 [style=invis];
+        disk7 [style=invis];
+        disk8 [style=invis];
+        disk0 -> disk1 [label="start\nwrite"]; 
+        disk1 -> disk0 [label="write\ncomplete"]; 
+        label = "Disk";
+       color=lightgrey;
+    }
+    {rank = same; mds0; cli0; ldlm0; disk0; }
+    {rank = same; mds1; cli1; ldlm1; disk1; }
+    {rank = same; mds2; cli2; ldlm2; disk2; }
+    {rank = same; mds3; cli3; ldlm3; disk3; }
+    start -> cli0;
+    start -> mds0;
+    start -> ldlm0;
+    start -> disk0;
+    start [shape=Mdiamond];
+}