[SCSI] bfa: vport state machine fix
Vport state machine does not cleanup associated lport in some states: while waiting for fdisc response or fdisc failure state. The fixe is to cleanup lport on vport delete in all states. In fdisc state, discard fdisc response and delete lport and wait for lport deletecompletion. in error state, delete lport and wait for delete completion. Signed-off-by: Jing Huang <huangj@brocade.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
d9883548a0
commit
1769f990fc
1 changed files with 5 additions and 4 deletions
|
@ -218,9 +218,9 @@ bfa_fcs_vport_sm_fdisc(struct bfa_fcs_vport_s *vport,
|
|||
|
||||
switch (event) {
|
||||
case BFA_FCS_VPORT_SM_DELETE:
|
||||
bfa_sm_set_state(vport, bfa_fcs_vport_sm_logo);
|
||||
bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
|
||||
bfa_lps_discard(vport->lps);
|
||||
bfa_fcs_vport_do_logo(vport);
|
||||
bfa_fcs_port_delete(&vport->lport);
|
||||
break;
|
||||
|
||||
case BFA_FCS_VPORT_SM_OFFLINE:
|
||||
|
@ -357,8 +357,9 @@ bfa_fcs_vport_sm_error(struct bfa_fcs_vport_s *vport,
|
|||
|
||||
switch (event) {
|
||||
case BFA_FCS_VPORT_SM_DELETE:
|
||||
bfa_sm_set_state(vport, bfa_fcs_vport_sm_uninit);
|
||||
bfa_fcs_vport_free(vport);
|
||||
bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
|
||||
bfa_fcs_port_delete(&vport->lport);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
Loading…
Reference in a new issue