Add a diagram in Documentation/scsi/scsi_transport_srp that
illustrates the rport state transitions.

Signed-off-by: Bart Van Assche <[email protected]>
Cc: David Dillow <[email protected]>
Cc: Vu Pham <[email protected]>
Cc: Sebastian Riemer <[email protected]>
Cc: James Bottomley <[email protected]>
---
 Documentation/scsi/scsi_transport_srp/Makefile     |  7 ++++++
 .../scsi_transport_srp/rport_state_diagram.dot     | 26 ++++++++++++++++++++++
 2 files changed, 33 insertions(+)
 create mode 100644 Documentation/scsi/scsi_transport_srp/Makefile
 create mode 100644 
Documentation/scsi/scsi_transport_srp/rport_state_diagram.dot

diff --git a/Documentation/scsi/scsi_transport_srp/Makefile 
b/Documentation/scsi/scsi_transport_srp/Makefile
new file mode 100644
index 0000000..5f6b567
--- /dev/null
+++ b/Documentation/scsi/scsi_transport_srp/Makefile
@@ -0,0 +1,7 @@
+all: rport_state_diagram.svg rport_state_diagram.png
+
+rport_state_diagram.svg: rport_state_diagram.dot
+       dot -Tsvg -o $@ $<
+
+rport_state_diagram.png: rport_state_diagram.dot
+       dot -Tpng -o $@ $<
diff --git a/Documentation/scsi/scsi_transport_srp/rport_state_diagram.dot 
b/Documentation/scsi/scsi_transport_srp/rport_state_diagram.dot
new file mode 100644
index 0000000..75d610d
--- /dev/null
+++ b/Documentation/scsi/scsi_transport_srp/rport_state_diagram.dot
@@ -0,0 +1,26 @@
+digraph srp_initiator {
+       node [shape = doublecircle]; running lost;
+       node [shape = circle];
+
+       {
+         rank = min;
+         running_rta   [ label = "running;\nreconnect\ntimer\nactive" ];
+       };
+       running         [ label = "running;\nreconnect\ntimer\nstopped" ];
+       blocked;
+       failfast        [ label = "fail I/O\nfast" ];
+       lost;
+
+       running -> running_rta          [ label = "fast_io_fail_tmo = off 
and\ndev_loss_tmo = off;\nsrp_start_tl_fail_timers()" ];
+       running_rta -> running          [ label = "fast_io_fail_tmo = off 
and\ndev_loss_tmo = off;\nreconnecting succeeded" ];
+       running -> blocked              [ label = "fast_io_fail_tmo >= 0 
or\ndev_loss_tmo >= 0;\nsrp_start_tl_fail_timers()" ];
+       running -> failfast             [ label = "fast_io_fail_tmo = off 
and\ndev_loss_tmo = off;\nreconnecting failed\n" ];
+       blocked -> failfast             [ label = "fast_io_fail_tmo\nexpired 
or\nreconnecting\nfailed" ];
+       blocked -> lost                 [ label = "dev_loss_tmo\nexpired 
or\nsrp_stop_rport_timers()" ];
+       failfast -> lost                [ label = "dev_loss_tmo\nexpired 
or\nsrp_stop_rport_timers()" ];
+       blocked -> running              [ label = "reconnecting\nsucceeded" ];
+       failfast -> failfast            [ label = "reconnecting\nfailed" ];
+       failfast -> running             [ label = "reconnecting\nsucceeded" ];
+       running -> lost                 [ label = "srp_stop_rport_timers()" ];
+       running_rta -> lost             [ label = "srp_stop_rport_timers()" ];
+}
-- 
1.8.1.4

<<attachment: rport_state_diagram.svg>>

Reply via email to