Documentation / admin-guide / blockdev / drbd / drbd-connection-state-overview.dot


Based on kernel version 6.8. Page generated on 2024-03-11 21:26 EST.

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 sw=2 sts=2 :
digraph {
  rankdir=BT
  bgcolor=white
 
  node [shape=plaintext]
  node [fontcolor=black]
 
  StandAlone     [ style=filled,fillcolor=gray,label=StandAlone ]
 
  node [fontcolor=lightgray]
 
  Unconnected    [ label=Unconnected ]
 
  CommTrouble [ shape=record,
    label="{communication loss|{Timeout|BrokenPipe|NetworkFailure}}" ]
 
  node [fontcolor=gray]
 
  subgraph cluster_try_connect {
    label="try to connect, handshake"
    rank=max
    WFConnection   [ label=WFConnection ]
    WFReportParams [ label=WFReportParams ]
  }
 
  TearDown       [ label=TearDown ]
 
  Connected      [ label=Connected,style=filled,fillcolor=green,fontcolor=black ]
 
  node [fontcolor=lightblue]
 
  StartingSyncS  [ label=StartingSyncS ]
  StartingSyncT  [ label=StartingSyncT ]
 
  subgraph cluster_bitmap_exchange {
    node [fontcolor=red]
    fontcolor=red
    label="new application (WRITE?) requests blocked\lwhile bitmap is exchanged"
 
    WFBitMapT      [ label=WFBitMapT ]
    WFSyncUUID     [ label=WFSyncUUID ]
    WFBitMapS      [ label=WFBitMapS ]
  }
 
  node [fontcolor=blue]
 
  cluster_resync [ shape=record,label="{<any>resynchronisation process running\l'concurrent' application requests allowed|{{<T>PausedSyncT\nSyncTarget}|{<S>PausedSyncS\nSyncSource}}}" ]
 
  node [shape=box,fontcolor=black]
 
  // 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 disconnect\lor serious communication trouble" ]
  Unconnected -> WFConnection [ label="receiver thread is started" ]
  WFConnection -> WFReportParams [ headlabel="accept()\land/or                        \lconnect()\l" ]
 
  WFReportParams -> StandAlone [ label="during handshake\lpeers do not agree\labout something essential" ]
  WFReportParams -> Connected [ label="data identical\lno sync needed",color=green,fontcolor=green ]
 
    WFReportParams -> WFBitMapS
    WFReportParams -> WFBitMapT
    WFBitMapT -> WFSyncUUID [minlen=0.1,constraint=false]
 
      WFBitMapS -> cluster_resync:S
      WFSyncUUID -> cluster_resync:T
 
  edge [color=green]
  cluster_resync:any -> Connected [ label="resnyc done",fontcolor=green ]
 
  edge [color=red]
  WFReportParams -> CommTrouble
  Connected -> CommTrouble
  cluster_resync:any -> CommTrouble
  edge [color=black]
  CommTrouble -> Unconnected [label="receiver thread is stopped" ]
 
}