0001 // vim: set sw=2 sts=2 :
0002 digraph {
0003 rankdir=BT
0004 bgcolor=white
0005
0006 node [shape=plaintext]
0007 node [fontcolor=black]
0008
0009 StandAlone [ style=filled,fillcolor=gray,label=StandAlone ]
0010
0011 node [fontcolor=lightgray]
0012
0013 Unconnected [ label=Unconnected ]
0014
0015 CommTrouble [ shape=record,
0016 label="{communication loss|{Timeout|BrokenPipe|NetworkFailure}}" ]
0017
0018 node [fontcolor=gray]
0019
0020 subgraph cluster_try_connect {
0021 label="try to connect, handshake"
0022 rank=max
0023 WFConnection [ label=WFConnection ]
0024 WFReportParams [ label=WFReportParams ]
0025 }
0026
0027 TearDown [ label=TearDown ]
0028
0029 Connected [ label=Connected,style=filled,fillcolor=green,fontcolor=black ]
0030
0031 node [fontcolor=lightblue]
0032
0033 StartingSyncS [ label=StartingSyncS ]
0034 StartingSyncT [ label=StartingSyncT ]
0035
0036 subgraph cluster_bitmap_exchange {
0037 node [fontcolor=red]
0038 fontcolor=red
0039 label="new application (WRITE?) requests blocked\lwhile bitmap is exchanged"
0040
0041 WFBitMapT [ label=WFBitMapT ]
0042 WFSyncUUID [ label=WFSyncUUID ]
0043 WFBitMapS [ label=WFBitMapS ]
0044 }
0045
0046 node [fontcolor=blue]
0047
0048 cluster_resync [ shape=record,label="{<any>resynchronisation process running\l'concurrent' application requests allowed|{{<T>PausedSyncT\nSyncTarget}|{<S>PausedSyncS\nSyncSource}}}" ]
0049
0050 node [shape=box,fontcolor=black]
0051
0052 // drbdadm [label="drbdadm connect"]
0053 // handshake [label="drbd_connect()\ndrbd_do_handshake\ndrbd_sync_handshake() etc."]
0054 // comm_error [label="communication trouble"]
0055
0056 //
0057 // edges
0058 // --------------------------------------
0059
0060 StandAlone -> Unconnected [ label="drbdadm connect" ]
0061 Unconnected -> StandAlone [ label="drbdadm disconnect\lor serious communication trouble" ]
0062 Unconnected -> WFConnection [ label="receiver thread is started" ]
0063 WFConnection -> WFReportParams [ headlabel="accept()\land/or \lconnect()\l" ]
0064
0065 WFReportParams -> StandAlone [ label="during handshake\lpeers do not agree\labout something essential" ]
0066 WFReportParams -> Connected [ label="data identical\lno sync needed",color=green,fontcolor=green ]
0067
0068 WFReportParams -> WFBitMapS
0069 WFReportParams -> WFBitMapT
0070 WFBitMapT -> WFSyncUUID [minlen=0.1,constraint=false]
0071
0072 WFBitMapS -> cluster_resync:S
0073 WFSyncUUID -> cluster_resync:T
0074
0075 edge [color=green]
0076 cluster_resync:any -> Connected [ label="resnyc done",fontcolor=green ]
0077
0078 edge [color=red]
0079 WFReportParams -> CommTrouble
0080 Connected -> CommTrouble
0081 cluster_resync:any -> CommTrouble
0082 edge [color=black]
0083 CommTrouble -> Unconnected [label="receiver thread is stopped" ]
0084
0085 }