4 node [style=filled,color=white];
6 cli0 [label="idle client"];
7 cli1 [label="waiting\non mkdir"];
15 cli0 -> cli1 [label="start\nmkdir"];
16 cli1 -> cli0 [label="mkdir\ncomplete"];
21 node [style=filled,color=white];
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"];
35 node [style=filled,color=white];
37 cn4 [label="ready to\nnotify client"];
38 cn5 [label="client\nnotified"];
39 cn4 -> cn5 [label="mkdir\ncomplete"];
40 label = "Client notification";
44 node [style=filled,color=white];
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";
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"];
64 node [style=filled,color=white];
66 ldlm0 [label=unlocked];
67 ldlm1 [label="locked"];
75 ldlm0 -> ldlm1 [label="lock"];
76 ldlm1 -> ldlm0 [label="unlock"];
81 node [style=filled,color=white];
83 disk0 [label="idle disk"];
84 disk1 [label="active disk"];
92 disk0 -> disk1 [label="start\nwrite"];
93 disk1 -> disk0 [label="write\ncomplete"];
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; }
105 start [shape=Mdiamond];