xref: /linux/Documentation/scsi/scsi_transport_srp/rport_state_diagram.dot (revision e5451c8f8330e03ad3cfa16048b4daf961af434f)
1digraph srp_initiator {
2	node [shape = doublecircle]; running lost;
3	node [shape = circle];
4
5	{
6	  rank = min;
7	  running_rta	[ label = "running;\nreconnect\ntimer\nactive" ];
8	};
9	running		[ label = "running;\nreconnect\ntimer\nstopped" ];
10	blocked;
11	failfast	[ label = "fail I/O\nfast" ];
12	lost;
13
14	running -> running_rta		[ label = "fast_io_fail_tmo = off and\ndev_loss_tmo = off;\nsrp_start_tl_fail_timers()" ];
15	running_rta -> running		[ label = "fast_io_fail_tmo = off and\ndev_loss_tmo = off;\nreconnecting succeeded" ];
16	running -> blocked		[ label = "fast_io_fail_tmo >= 0 or\ndev_loss_tmo >= 0;\nsrp_start_tl_fail_timers()" ];
17	running -> failfast		[ label = "fast_io_fail_tmo = off and\ndev_loss_tmo = off;\nreconnecting failed\n" ];
18	blocked -> failfast		[ label = "fast_io_fail_tmo\nexpired or\nreconnecting\nfailed" ];
19	blocked -> lost			[ label = "dev_loss_tmo\nexpired or\nsrp_stop_rport_timers()" ];
20	failfast -> lost		[ label = "dev_loss_tmo\nexpired or\nsrp_stop_rport_timers()" ];
21	blocked -> running		[ label = "reconnecting\nsucceeded" ];
22	failfast -> failfast		[ label = "reconnecting\nfailed" ];
23	failfast -> running		[ label = "reconnecting\nsucceeded" ];
24	running -> lost			[ label = "srp_stop_rport_timers()" ];
25	running_rta -> lost		[ label = "srp_stop_rport_timers()" ];
26}
27