> 1st scsi_try_host_reset() --> srp_host_reset() -->
 > srp_reconnect_target() return SUCCESS. Then scsi_eh_try_stu() or
 > scsi_eh_tur() is called right after
 > 
 > scsi_eh_try_stu or scsi_eh_tur --> scsi_send_eh_cmnd() -->
 > srp_queuecommand()

But after srp_reconnect_target(), both SRP's and the midlayer's queue
of pending commands should be completely empty, since I put

        list_for_each_entry(req, &target->req_queue, list) {
                req->scmnd->result = DID_RESET << 16;
                req->scmnd->scsi_done(req->scmnd);
                srp_unmap_data(req->scmnd, target, req);
        }

and

        INIT_LIST_HEAD(&target->free_reqs);
        INIT_LIST_HEAD(&target->req_queue);
        for (i = 0; i < SRP_SQ_SIZE; ++i)
                list_add_tail(&target->req_ring[i].list, &target->free_reqs);

in there.  Why doesn't that work to kill all the pending commands?

 - R.
_______________________________________________
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to