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