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