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