Merge tag 'for-5.3-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave...
[sfrench/cifs-2.6.git] / Documentation / admin-guide / blockdev / drbd / drbd-connection-state-overview.dot
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 }