Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / doc / txt / dafs-fsa.dot
CommitLineData
805e021f
CE
1#
2# This is a dot (http://www.graphviz.org) description of the various
3# states volumes can be in for DAFS (Demand Attach File Server).
4#
5# Author: Steven Jenkins
6# Date: 2007-05-24
7#
8
9digraph VolumeStates {
10 size="11,17"
11 graph [
12 rankdir = "TB"
13 ];
14
15 subgraph clusterKey {
16 rankdir="LR";
17 shape = "rectangle";
18
19 s1 [ shape=plaintext, label = "VPut after VDetach in brown",
20 fontcolor="brown" ];
21 s2 [ shape=plaintext, label = "VAttach in blue",
22 fontcolor="blue" ];
23 s3 [ shape=plaintext, label = "VGet/VHold in purple",
24 fontcolor="purple" ];
25 s4 [ shape=plaintext, label = "Error States in red",
26 fontcolor="red" ];
27 s5 [ shape=plaintext, label = "VPut after VOffline in green",
28 fontcolor="green" ];
29 s6 [ shape=ellipse, label = "re-entrant" ];
30 s7 [ shape=ellipse, peripheries=2, label="non re-entrant" ];
31 s8 [ shape=ellipse, color="red", label="Error States" ];
32
33 s6->s7->s8->s1->s2->s3->s4->s5 [style="invis"];
34
35 }
36
37 node [ peripheries = "2" ] ATTACHING \
38 LOADING_VNODE_BITMAPS HDR_LOADING_FROM_DISK \
39 HDR_ATTACHING_LRU_PULL \
40 "UPDATING\nSYNCING_VOL_HDR_TO_DISK" \
41 OFFLINING DETACHING;
42 node [ shape = "ellipse", peripheries = "1" ];
43 node [ color = "red" ] HARD_ERROR SALVAGE_REQUESTED SALVAGING;
44
45 node [ color = "black" ]; // default back to black
46
47 UNATTACHED->Exclusive_vol_op_executing [label = "controlled by FSSYNC" ];
48 Exclusive_vol_op_executing->UNATTACHED [label = "controlled by FSSYNC" ];
49 UNATTACHED->FREED [ label = "VCancelReservation_r() after a\nVDetach() or FreeVolume() will\ncause CheckDetach() or CheckFree() to fire" ];
50 OFFLINING->UNATTACHED;
51 UNATTACHED->PREATTACHED [ color = "orange", label = "PreAttach()" ];
52 PREATTACHED->UNATTACHED [ color = "orange", label = "VOffline()"];
53 HARD_ERROR->PREATTACHED [ color = "orange", label = "operator intervention via FSSYNC" ];
54
55 PREATTACHED->Exclusive_vol_op_executing [color = "orange", label = "controlled by FSSYNC" ];
56 Exclusive_vol_op_executing->PREATTACHED [color = "orange", label = "controlled by FSSYNC" ];
57 PREATTACHED->FREED [ color = "orange", label = "VCancelReservation_r() after a\nVDetach() or FreeVolume() will\ncause CheckDetach() or CheckFree() to fire" ];
58 PREATTACHED->ATTACHING [ color = "blue", weight = "8" ];
59 SALVAGING->PREATTACHED [ label = "controlled via FSSYNC" ];
60
61 DETACHING->FREED ;
62 SHUTTING_DOWN->DETACHING [ color = "brown" ];
63 ATTACHED_nUsers_GT_0->SHUTTING_DOWN [ color = "orange", label = "VDetach()" ];
64
65 DETACHING->"UPDATING\nSYNCING_VOL_HDR_TO_DISK" [ color = "brown" ];
66 "UPDATING\nSYNCING_VOL_HDR_TO_DISK"->DETACHING [ color = "brown" ];
67 OFFLINING->"UPDATING\nSYNCING_VOL_HDR_TO_DISK" [ color = "green" ];
68 "UPDATING\nSYNCING_VOL_HDR_TO_DISK"->OFFLINING [ color = "green" ];
69 GOING_OFFLINE->OFFLINING [ color = "green" ];
70
71 "UPDATING\nSYNCING_VOL_HDR_TO_DISK"->SALVAGE_REQUESTED [ color = "red" ];
72 "UPDATING\nSYNCING_VOL_HDR_TO_DISK"->ATTACHING [ color = "blue" ];
73 ATTACHING->"UPDATING\nSYNCING_VOL_HDR_TO_DISK" [ color = "blue" ];
74
75 ATTACHED_nUsers_GT_0->GOING_OFFLINE [ color = "orange", label = "VOffline" ];
76 ATTACHED_nUsers_GT_0->ATTACHED_nUsers_EQ_0 [ color = "orange", label = "VPut" ];
77
78 ATTACHED_nUsers_GT_0->SALVAGE_REQUESTED [ color = "red" ];
79
80 LOADING_VNODE_BITMAPS->ATTACHING [ color = "blue" ];
81 ATTACHING->LOADING_VNODE_BITMAPS [ color = "blue" ] ;
82 LOADING_VNODE_BITMAPS->SALVAGE_REQUESTED [ color = "red" ];
83 HDR_LOADING_FROM_DISK->SALVAGE_REQUESTED [ color = "red" ];
84 HDR_LOADING_FROM_DISK->ATTACHING [ color = "blue" ] ;
85 HDR_LOADING_FROM_DISK->ATTACHED_nUsers_GT_0 [ color = "purple" ];
86
87 SALVAGE_REQUESTED->SALVAGING [ label = "controlled via FSSYNC" ];
88 SALVAGE_REQUESTED->HARD_ERROR [ color = "red",
89 label = "After hard salvage limit reached,\n hard error state is in effect\nuntil there is operator intervention" ];
90
91 HDR_ATTACHING_LRU_PULL->HDR_LOADING_FROM_DISK [ color = "blue" ];
92 HDR_ATTACHING_LRU_PULL->HDR_LOADING_FROM_DISK [ color = "purple" ];
93 HDR_ATTACHING_LRU_PULL->ATTACHED_nUsers_GT_0 [ color = "purple", label = "header can be in LRU\nand not have been reclaimed\nthus skipping disk I/O" ];
94
95 ATTACHING->HDR_ATTACHING_LRU_PULL [ color = "blue" ];
96 ATTACHING->ATTACHED_nUsers_EQ_0 [ color = "blue" ];
97
98 ATTACHING->SALVAGE_REQUESTED [ color = "red" ];
99 ATTACHED_nUsers_EQ_0->HDR_ATTACHING_LRU_PULL [ color = "purple" ];
100
101 ATTACHED_nUsers_EQ_0->SALVAGE_REQUESTED [ color = "red" ];
102
103 // Various loopback transitions
104 GOING_OFFLINE->GOING_OFFLINE [ label = "VPut when (nUsers > 1)" ];
105 SHUTTING_DOWN->SHUTTING_DOWN
106 [ label = "VPut when ((nUsers > 1) ||\n((nUsers == 1) && (nWaiters > 0)))" ];
107 SHUTTING_DOWN->SHUTTING_DOWN
108 [ label = "VCancelReservation_r when ((nWaiters > 1)\n|| ((nWaiters == 1) && (nUsers > 0)))"];
109}