drbd-connection-state-overview.dot 2.5 KB

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