diff options
Diffstat (limited to 'Documentation/blockdev/drbd/drbd-connection-state-overview.dot')
-rw-r--r-- | Documentation/blockdev/drbd/drbd-connection-state-overview.dot | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/Documentation/blockdev/drbd/drbd-connection-state-overview.dot b/Documentation/blockdev/drbd/drbd-connection-state-overview.dot new file mode 100644 index 000000000000..6d9cf0a7b11d --- /dev/null +++ b/Documentation/blockdev/drbd/drbd-connection-state-overview.dot | |||
@@ -0,0 +1,85 @@ | |||
1 | // vim: set sw=2 sts=2 : | ||
2 | digraph { | ||
3 | rankdir=BT | ||
4 | bgcolor=white | ||
5 | |||
6 | node [shape=plaintext] | ||
7 | node [fontcolor=black] | ||
8 | |||
9 | StandAlone [ style=filled,fillcolor=gray,label=StandAlone ] | ||
10 | |||
11 | node [fontcolor=lightgray] | ||
12 | |||
13 | Unconnected [ label=Unconnected ] | ||
14 | |||
15 | CommTrouble [ shape=record, | ||
16 | label="{communication loss|{Timeout|BrokenPipe|NetworkFailure}}" ] | ||
17 | |||
18 | node [fontcolor=gray] | ||
19 | |||
20 | subgraph cluster_try_connect { | ||
21 | label="try to connect, handshake" | ||
22 | rank=max | ||
23 | WFConnection [ label=WFConnection ] | ||
24 | WFReportParams [ label=WFReportParams ] | ||
25 | } | ||
26 | |||
27 | TearDown [ label=TearDown ] | ||
28 | |||
29 | Connected [ label=Connected,style=filled,fillcolor=green,fontcolor=black ] | ||
30 | |||
31 | node [fontcolor=lightblue] | ||
32 | |||
33 | StartingSyncS [ label=StartingSyncS ] | ||
34 | StartingSyncT [ label=StartingSyncT ] | ||
35 | |||
36 | subgraph cluster_bitmap_exchange { | ||
37 | node [fontcolor=red] | ||
38 | fontcolor=red | ||
39 | label="new application (WRITE?) requests blocked\lwhile bitmap is exchanged" | ||
40 | |||
41 | WFBitMapT [ label=WFBitMapT ] | ||
42 | WFSyncUUID [ label=WFSyncUUID ] | ||
43 | WFBitMapS [ label=WFBitMapS ] | ||
44 | } | ||
45 | |||
46 | node [fontcolor=blue] | ||
47 | |||
48 | cluster_resync [ shape=record,label="{<any>resynchronisation process running\l'concurrent' application requests allowed|{{<T>PausedSyncT\nSyncTarget}|{<S>PausedSyncS\nSyncSource}}}" ] | ||
49 | |||
50 | node [shape=box,fontcolor=black] | ||
51 | |||
52 | // drbdadm [label="drbdadm connect"] | ||
53 | // handshake [label="drbd_connect()\ndrbd_do_handshake\ndrbd_sync_handshake() etc."] | ||
54 | // comm_error [label="communication trouble"] | ||
55 | |||
56 | // | ||
57 | // edges | ||
58 | // -------------------------------------- | ||
59 | |||
60 | StandAlone -> Unconnected [ label="drbdadm connect" ] | ||
61 | Unconnected -> StandAlone [ label="drbdadm disconnect\lor serious communication trouble" ] | ||
62 | Unconnected -> WFConnection [ label="receiver thread is started" ] | ||
63 | WFConnection -> WFReportParams [ headlabel="accept()\land/or \lconnect()\l" ] | ||
64 | |||
65 | WFReportParams -> StandAlone [ label="during handshake\lpeers do not agree\labout something essential" ] | ||
66 | WFReportParams -> Connected [ label="data identical\lno sync needed",color=green,fontcolor=green ] | ||
67 | |||
68 | WFReportParams -> WFBitMapS | ||
69 | WFReportParams -> WFBitMapT | ||
70 | WFBitMapT -> WFSyncUUID [minlen=0.1,constraint=false] | ||
71 | |||
72 | WFBitMapS -> cluster_resync:S | ||
73 | WFSyncUUID -> cluster_resync:T | ||
74 | |||
75 | edge [color=green] | ||
76 | cluster_resync:any -> Connected [ label="resnyc done",fontcolor=green ] | ||
77 | |||
78 | edge [color=red] | ||
79 | WFReportParams -> CommTrouble | ||
80 | Connected -> CommTrouble | ||
81 | cluster_resync:any -> CommTrouble | ||
82 | edge [color=black] | ||
83 | CommTrouble -> Unconnected [label="receiver thread is stopped" ] | ||
84 | |||
85 | } | ||