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
).
5 # Author
: Steven Jenkins
19 s1 [
shape=
plaintext, label =
"VPut after VDetach in brown",
21 s2 [
shape=
plaintext, label =
"VAttach in blue",
23 s3 [
shape=
plaintext, label =
"VGet/VHold in purple",
25 s4 [
shape=
plaintext, label =
"Error States in red",
27 s5 [
shape=
plaintext, label =
"VPut after VOffline in 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" ]
;
33 s6
->s7
->s8
->s1
->s2
->s3
->s4
->s5 [
style=
"invis"]
;
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" \
42 node [
shape =
"ellipse", peripheries =
"1" ]
;
43 node [
color =
"red" ] HARD_ERROR SALVAGE_REQUESTED SALVAGING
;
45 node [
color =
"black" ]
; // default back to black
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" ]
;
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" ]
;
62 SHUTTING_DOWN
->DETACHING [
color =
"brown" ]
;
63 ATTACHED_nUsers_GT_0
->SHUTTING_DOWN [
color =
"orange", label =
"VDetach()" ]
;
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" ]
;
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" ]
;
75 ATTACHED_nUsers_GT_0
->GOING_OFFLINE [
color =
"orange", label =
"VOffline" ]
;
76 ATTACHED_nUsers_GT_0
->ATTACHED_nUsers_EQ_0 [
color =
"orange", label =
"VPut" ]
;
78 ATTACHED_nUsers_GT_0
->SALVAGE_REQUESTED [
color =
"red" ]
;
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" ]
;
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" ]
;
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" ]
;
95 ATTACHING
->HDR_ATTACHING_LRU_PULL [
color =
"blue" ]
;
96 ATTACHING
->ATTACHED_nUsers_EQ_0 [
color =
"blue" ]
;
98 ATTACHING
->SALVAGE_REQUESTED [
color =
"red" ]
;
99 ATTACHED_nUsers_EQ_0
->HDR_ATTACHING_LRU_PULL [
color =
"purple" ]
;
101 ATTACHED_nUsers_EQ_0
->SALVAGE_REQUESTED [
color =
"red" ]
;
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)))"]
;