aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/blockdev/drbd/drbd-connection-state-overview.dot
blob: 6d9cf0a7b11d7476315f2771a84b1f032bc03867 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
// vim set sw2 sts2 :
digraph {
  rankdirBT
  bgcolorwhite

  node [shapeplaintext
  node [fontcolorblack

  StandAlone     [ stylefilledfillcolorgraylabelStandAlone ]

  node [fontcolorlightgray

  Unconnected    [ labelUnconnected ]

  CommTrouble [ shaperecord
    label"{communication loss{TimeoutBrokenPipeNetworkFailure}" ]

  node [fontcolorgray

  subgraph cluster_try_connect {
    label"try to connect handshake"
    rankmax
    WFConnection   [ labelWFConnection ]
    WFReportParams [ labelWFReportParams ]
  }

  TearDown       [ labelTearDown ]

  Connected      [ labelConnectedstylefilledfillcolorgreenfontcolorblack ]

  node [fontcolorlightblue

  StartingSyncS  [ labelStartingSyncS ]
  StartingSyncT  [ labelStartingSyncT ]

  subgraph cluster_bitmap_exchange {
    node [fontcolorred
    fontcolorred
    label"new application (WRITE) requests blockedlwhile bitmap is exchanged"

    WFBitMapT      [ labelWFBitMapT ]
    WFSyncUUID     [ labelWFSyncUUID ]
    WFBitMapS      [ labelWFBitMapS ]
  }

  node [fontcolorblue

  cluster_resync [ shaperecordlabel"{<anyresynchronisation process runninglconcurrent application requests allowed{{<TPausedSyncT\nSyncTarget|{<SPausedSyncS\nSyncSource}}" ]

  node [shapeboxfontcolorblack

  // drbdadm [label"drbdadm connect"]
  // handshake [label"drbd_connect()\ndrbd_do_handshake\ndrbd_sync_handshake() etc"]
  // comm_error [label"communication trouble"]

  //
  // edges
  // --------------------------------------

  StandAlone -> Unconnected [ label"drbdadm connect" ]
  Unconnected -> StandAlone  [ label"drbdadm disconnectlor serious communication trouble" ]
  Unconnected -> WFConnection [ label"receiver thread is started" ]
  WFConnection -> WFReportParams [ headlabel"accept()\landor                        \lconnect()\l" ]

  WFReportParams -> StandAlone [ label"during handshakelpeers do not agreelabout something essential" ]
  WFReportParams -> Connected [ label"data identicallno sync needed",colorgreenfontcolorgreen ]

    WFReportParams -> WFBitMapS
    WFReportParams -> WFBitMapT
    WFBitMapT -> WFSyncUUID [minlen0.1constraintfalse

      WFBitMapS -> cluster_resyncS
      WFSyncUUID -> cluster_resyncT

  edge [colorgreen
  cluster_resyncany -> Connected [ label"resnyc done",fontcolorgreen ]

  edge [colorred
  WFReportParams -> CommTrouble
  Connected -> CommTrouble
  cluster_resyncany -> CommTrouble
  edge [colorblack
  CommTrouble -> Unconnected [label"receiver thread is stopped" ]

}