| 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 | } |