Lines Matching refs:scmnd
1053 static void srp_unmap_data(struct scsi_cmnd *scmnd, in srp_unmap_data() argument
1062 if (!scsi_sglist(scmnd) || in srp_unmap_data()
1063 (scmnd->sc_data_direction != DMA_TO_DEVICE && in srp_unmap_data()
1064 scmnd->sc_data_direction != DMA_FROM_DEVICE)) in srp_unmap_data()
1090 ib_dma_unmap_sg(ibdev, scsi_sglist(scmnd), scsi_sg_count(scmnd), in srp_unmap_data()
1091 scmnd->sc_data_direction); in srp_unmap_data()
1108 struct scsi_cmnd *scmnd) in srp_claim_req() argument
1113 if (req->scmnd && in srp_claim_req()
1114 (!sdev || req->scmnd->device == sdev) && in srp_claim_req()
1115 (!scmnd || req->scmnd == scmnd)) { in srp_claim_req()
1116 scmnd = req->scmnd; in srp_claim_req()
1117 req->scmnd = NULL; in srp_claim_req()
1119 scmnd = NULL; in srp_claim_req()
1123 return scmnd; in srp_claim_req()
1134 struct scsi_cmnd *scmnd, s32 req_lim_delta) in srp_free_req() argument
1138 srp_unmap_data(scmnd, ch, req); in srp_free_req()
1148 struct scsi_cmnd *scmnd = srp_claim_req(ch, req, sdev, NULL); in srp_finish_req() local
1150 if (scmnd) { in srp_finish_req()
1151 srp_free_req(ch, req, scmnd, 0); in srp_finish_req()
1152 scmnd->result = result; in srp_finish_req()
1153 scmnd->scsi_done(scmnd); in srp_finish_req()
1506 static int srp_map_data(struct scsi_cmnd *scmnd, struct srp_rdma_ch *ch, in srp_map_data() argument
1520 if (!scsi_sglist(scmnd) || scmnd->sc_data_direction == DMA_NONE) in srp_map_data()
1523 if (scmnd->sc_data_direction != DMA_FROM_DEVICE && in srp_map_data()
1524 scmnd->sc_data_direction != DMA_TO_DEVICE) { in srp_map_data()
1527 scmnd->sc_data_direction); in srp_map_data()
1531 nents = scsi_sg_count(scmnd); in srp_map_data()
1532 scat = scsi_sglist(scmnd); in srp_map_data()
1537 count = ib_dma_map_sg(ibdev, scat, nents, scmnd->sc_data_direction); in srp_map_data()
1612 if (scmnd->sc_data_direction == DMA_TO_DEVICE) in srp_map_data()
1621 if (scmnd->sc_data_direction == DMA_TO_DEVICE) in srp_map_data()
1726 struct scsi_cmnd *scmnd; in srp_process_rsp() local
1739 scmnd = scsi_host_find_tag(target->scsi_host, rsp->tag); in srp_process_rsp()
1740 if (scmnd) { in srp_process_rsp()
1741 req = (void *)scmnd->host_scribble; in srp_process_rsp()
1742 scmnd = srp_claim_req(ch, req, NULL, scmnd); in srp_process_rsp()
1744 if (!scmnd) { in srp_process_rsp()
1755 scmnd->result = rsp->status; in srp_process_rsp()
1758 memcpy(scmnd->sense_buffer, rsp->data + in srp_process_rsp()
1765 scsi_set_resid(scmnd, be32_to_cpu(rsp->data_in_res_cnt)); in srp_process_rsp()
1767 scsi_set_resid(scmnd, -be32_to_cpu(rsp->data_in_res_cnt)); in srp_process_rsp()
1769 scsi_set_resid(scmnd, be32_to_cpu(rsp->data_out_res_cnt)); in srp_process_rsp()
1771 scsi_set_resid(scmnd, -be32_to_cpu(rsp->data_out_res_cnt)); in srp_process_rsp()
1773 srp_free_req(ch, req, scmnd, in srp_process_rsp()
1776 scmnd->host_scribble = NULL; in srp_process_rsp()
1777 scmnd->scsi_done(scmnd); in srp_process_rsp()
1978 static int srp_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *scmnd) in srp_queuecommand() argument
2002 scmnd->result = srp_chkready(target->rport); in srp_queuecommand()
2003 if (unlikely(scmnd->result)) in srp_queuecommand()
2006 WARN_ON_ONCE(scmnd->request->tag < 0); in srp_queuecommand()
2007 tag = blk_mq_unique_tag(scmnd->request); in srp_queuecommand()
2026 scmnd->host_scribble = (void *) req; in srp_queuecommand()
2032 cmd->lun = cpu_to_be64((u64) scmnd->device->lun << 48); in srp_queuecommand()
2034 memcpy(cmd->cdb, scmnd->cmnd, scmnd->cmd_len); in srp_queuecommand()
2036 req->scmnd = scmnd; in srp_queuecommand()
2039 len = srp_map_data(scmnd, ch, req); in srp_queuecommand()
2049 scmnd->result = len == -ENOMEM ? in srp_queuecommand()
2071 srp_unmap_data(scmnd, ch, req); in srp_queuecommand()
2080 req->scmnd = NULL; in srp_queuecommand()
2083 if (scmnd->result) { in srp_queuecommand()
2084 scmnd->scsi_done(scmnd); in srp_queuecommand()
2469 static int srp_abort(struct scsi_cmnd *scmnd) in srp_abort() argument
2471 struct srp_target_port *target = host_to_target(scmnd->device->host); in srp_abort()
2472 struct srp_request *req = (struct srp_request *) scmnd->host_scribble; in srp_abort()
2482 tag = blk_mq_unique_tag(scmnd->request); in srp_abort()
2487 if (!srp_claim_req(ch, req, NULL, scmnd)) in srp_abort()
2491 if (srp_send_tsk_mgmt(ch, tag, scmnd->device->lun, in srp_abort()
2498 srp_free_req(ch, req, scmnd, 0); in srp_abort()
2499 scmnd->result = DID_ABORT << 16; in srp_abort()
2500 scmnd->scsi_done(scmnd); in srp_abort()
2505 static int srp_reset_device(struct scsi_cmnd *scmnd) in srp_reset_device() argument
2507 struct srp_target_port *target = host_to_target(scmnd->device->host); in srp_reset_device()
2514 if (srp_send_tsk_mgmt(ch, SRP_TAG_NO_REQ, scmnd->device->lun, in srp_reset_device()
2525 srp_finish_req(ch, req, scmnd->device, DID_RESET << 16); in srp_reset_device()
2532 static int srp_reset_host(struct scsi_cmnd *scmnd) in srp_reset_host() argument
2534 struct srp_target_port *target = host_to_target(scmnd->device->host); in srp_reset_host()