Whamcloud - gitweb
LUDOC-266 protocol: Initial content for new repository
[doc/protocol.git] / figures / mkdir1.gv
1 digraph mkdir1 {
2     compound=true;
3     subgraph cluster0 {
4         node [style=filled,color=white];
5         style=filled;
6         cli0 [label="idle client"];
7         cli1 [label="waiting\non mkdir"];
8         cli2 [style=invis];
9         cli3 [style=invis];
10         cli4 [style=invis];
11         cli5 [style=invis];
12         cli6 [style=invis];
13         cli7 [style=invis];
14         cli8 [style=invis];
15         cli0 -> cli1 [label="start\nmkdir"];
16         cli1 -> cli0 [label="mkdir\ncomplete"];
17         label = "client";
18         color=lightgrey;
19     }
20     subgraph cluster1 {
21         node [style=filled,color=white];
22         style=filled;
23         label = "MDS thread";
24         color=lightgrey;
25         mds0 [label="idle\nMDS\nthread"];
26         mds1 [label="mkdir request\nhas arrived"];
27         mds2 [label="lock\nacquired"];
28         mds3 [label="memory\nupdates\ncomplete"];
29         mds7 [label="metadata\nupdate\ncomplete"];
30         mds8 [label="lock\nreleased"];
31         mds0 -> mds1 [label="start\nmkdir"];
32         mds1 -> mds2 [label="lock"];
33         mds2 -> mds3 [label="memory\nupdate\ntransaction"];
34         subgraph cluster4 {
35             node [style=filled,color=white];
36             style=filled;
37             cn4 [label="ready to\nnotify client"];
38             cn5 [label="client\nnotified"];
39             cn4 -> cn5 [label="mkdir\ncomplete"]; 
40             label = "Client notification";
41             color=lightblue;
42         }
43         subgraph cluster5 {
44             node [style=filled,color=white];
45             style=filled;
46             du4 [label="ready to\nwrite to\ndisk"];
47             du5 [label="writing\nto disk"];
48             du6 [label="disk\nwrite\ncomplete"];
49             du4 -> du5 [label="start\nwrite"]; 
50             du5 -> du6 [label="finish\nwrite"]; 
51             label = "Disk Update";
52             color=lightblue;
53         }
54         mds3 -> cn4 [style=dotted,lhead=cluster4];
55         mds3 -> du4 [style=dotted,lhead=cluster5];
56         cn5 -> mds7 [style=dotted,ltail=cluster4];
57         du6 -> mds7  [style=dotted,ltail=cluster5];
58         mds7-> mds8 [label="unlock"];
59         mds8 -> mds0;
60         label = "MDS";
61         color=lightgrey;
62     }
63     subgraph cluster2 {
64         node [style=filled,color=white];
65         style=filled;
66         ldlm0 [label=unlocked];
67         ldlm1 [label="locked"];
68         ldlm2 [style=invis];
69         ldlm3 [style=invis];
70         ldlm4 [style=invis];
71         ldlm5 [style=invis];
72         ldlm6 [style=invis];
73         ldlm7 [style=invis];
74         ldlm8 [style=invis];
75         ldlm0 -> ldlm1 [label="lock"];
76         ldlm1 -> ldlm0 [label="unlock"];
77         label = "LDLM";
78         color=lightgrey;
79     }
80     subgraph cluster3 {
81         node [style=filled,color=white];
82         style=filled;
83         disk0 [label="idle disk"];
84         disk1 [label="active disk"];
85         disk2 [style=invis];
86         disk3 [style=invis];
87         disk4 [style=invis];
88         disk5 [style=invis];
89         disk6 [style=invis];
90         disk7 [style=invis];
91         disk8 [style=invis];
92         disk0 -> disk1 [label="start\nwrite"]; 
93         disk1 -> disk0 [label="write\ncomplete"]; 
94         label = "Disk";
95         color=lightgrey;
96     }
97     {rank = same; mds0; cli0; ldlm0; disk0; }
98     {rank = same; mds1; cli1; ldlm1; disk1; }
99     {rank = same; mds2; cli2; ldlm2; disk2; }
100     {rank = same; mds3; cli3; ldlm3; disk3; }
101     start -> cli0;
102     start -> mds0;
103     start -> ldlm0;
104     start -> disk0;
105     start [shape=Mdiamond];
106 }