/Documentation/blockdev/drbd/drbd-connection-state-overview.dot

https://bitbucket.org/sammyz/iscream_thunderc-2.6.35-rebase · DOT · 85 lines · 53 code · 25 blank · 7 comment · 0 complexity · 9c69dcb6b2eaa8aaa9d2fb698b57a54c MD5 · raw file

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