| Philipp Reisner | b411b36 | 2009-09-25 16:07:19 -0700 | [diff] [blame] | 1 | // vim: set sw=2 sts=2 : | 
|  | 2 | digraph { | 
|  | 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 | } |