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