On Wed, Jul 19, 2017 at 11:51:49AM -0700, Himanshu Madhani wrote: > -static void qla_nvme_abort_all(fc_port_t *fcport) > -{ > - int que, cnt; > - unsigned long flags; > - srb_t *sp; > - struct qla_hw_data *ha = fcport->vha->hw; > - struct req_que *req; > - > - spin_lock_irqsave(&ha->hardware_lock, flags); > - for (que = 0; que < ha->max_req_queues; que++) { > - req = ha->req_q_map[que]; > - if (!req) > - continue; > - if (!req->outstanding_cmds) > - continue; > - for (cnt = 1; cnt < req->num_outstanding_cmds; cnt++) { > - sp = req->outstanding_cmds[cnt]; > - if ((sp) && ((sp->type == SRB_NVME_CMD) || > - (sp->type == SRB_NVME_LS)) && > - (sp->fcport == fcport)) { > - atomic_inc(&sp->ref_count); > - spin_unlock_irqrestore(&ha->hardware_lock, > - flags); > - qla_nvme_abort(ha, sp); > - spin_lock_irqsave(&ha->hardware_lock, flags); > - req->outstanding_cmds[cnt] = NULL; > - sp->done(sp, 1); > - } > - } > - } > - spin_unlock_irqrestore(&ha->hardware_lock, flags); > -} > - > static void qla_nvme_unregister_remote_port(struct work_struct *work) > { > struct fc_port *fcport = container_of(work, struct fc_port, > @@ -719,12 +679,13 @@ void qla_nvme_delete(struct scsi_qla_host *vha) > ql_log(ql_log_info, fcport->vha, 0x2114, "%s: fcport=%p\n", > __func__, fcport); > > + init_completion(&fcport->nvme_del_done); > nvme_fc_unregister_remoteport(fcport->nvme_remote_port); > qla_nvme_wait_on_rport_del(fcport); > - qla_nvme_abort_all(fcport); What changed the need to abort all outstanding commands? -- Johannes Thumshirn Storage jthumshirn@xxxxxxx +49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850