| // 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" ] |
| |
| } |