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