Lines Matching refs:scmnd
1074 static void srp_unmap_data(struct scsi_cmnd *scmnd, in srp_unmap_data() argument
1083 if (!scsi_sglist(scmnd) || in srp_unmap_data()
1084 (scmnd->sc_data_direction != DMA_TO_DEVICE && in srp_unmap_data()
1085 scmnd->sc_data_direction != DMA_FROM_DEVICE)) in srp_unmap_data()
1111 ib_dma_unmap_sg(ibdev, scsi_sglist(scmnd), scsi_sg_count(scmnd), in srp_unmap_data()
1112 scmnd->sc_data_direction); in srp_unmap_data()
1129 struct scsi_cmnd *scmnd) in srp_claim_req() argument
1134 if (req->scmnd && in srp_claim_req()
1135 (!sdev || req->scmnd->device == sdev) && in srp_claim_req()
1136 (!scmnd || req->scmnd == scmnd)) { in srp_claim_req()
1137 scmnd = req->scmnd; in srp_claim_req()
1138 req->scmnd = NULL; in srp_claim_req()
1140 scmnd = NULL; in srp_claim_req()
1144 return scmnd; in srp_claim_req()
1155 struct scsi_cmnd *scmnd, s32 req_lim_delta) in srp_free_req() argument
1159 srp_unmap_data(scmnd, ch, req); in srp_free_req()
1169 struct scsi_cmnd *scmnd = srp_claim_req(ch, req, sdev, NULL); in srp_finish_req() local
1171 if (scmnd) { in srp_finish_req()
1172 srp_free_req(ch, req, scmnd, 0); in srp_finish_req()
1173 scmnd->result = result; in srp_finish_req()
1174 scmnd->scsi_done(scmnd); in srp_finish_req()
1392 dev_name(&req->scmnd->device->sdev_gendev), sg_nents, in srp_map_finish_fr()
1614 if (desc_len != scsi_bufflen(req->scmnd) || in srp_check_mapping()
1615 mr_len > scsi_bufflen(req->scmnd)) in srp_check_mapping()
1617 scsi_bufflen(req->scmnd), desc_len, mr_len, in srp_check_mapping()
1630 static int srp_map_data(struct scsi_cmnd *scmnd, struct srp_rdma_ch *ch, in srp_map_data() argument
1646 if (!scsi_sglist(scmnd) || scmnd->sc_data_direction == DMA_NONE) in srp_map_data()
1649 if (scmnd->sc_data_direction != DMA_FROM_DEVICE && in srp_map_data()
1650 scmnd->sc_data_direction != DMA_TO_DEVICE) { in srp_map_data()
1653 scmnd->sc_data_direction); in srp_map_data()
1657 nents = scsi_sg_count(scmnd); in srp_map_data()
1658 scat = scsi_sglist(scmnd); in srp_map_data()
1663 count = ib_dma_map_sg(ibdev, scat, nents, scmnd->sc_data_direction); in srp_map_data()
1766 if (scmnd->sc_data_direction == DMA_TO_DEVICE) in srp_map_data()
1775 if (scmnd->sc_data_direction == DMA_TO_DEVICE) in srp_map_data()
1783 srp_unmap_data(scmnd, ch, req); in srp_map_data()
1912 struct scsi_cmnd *scmnd; in srp_process_rsp() local
1930 scmnd = scsi_host_find_tag(target->scsi_host, rsp->tag); in srp_process_rsp()
1931 if (scmnd && scmnd->host_scribble) { in srp_process_rsp()
1932 req = (void *)scmnd->host_scribble; in srp_process_rsp()
1933 scmnd = srp_claim_req(ch, req, NULL, scmnd); in srp_process_rsp()
1935 scmnd = NULL; in srp_process_rsp()
1937 if (!scmnd) { in srp_process_rsp()
1948 scmnd->result = rsp->status; in srp_process_rsp()
1951 memcpy(scmnd->sense_buffer, rsp->data + in srp_process_rsp()
1958 scsi_set_resid(scmnd, be32_to_cpu(rsp->data_in_res_cnt)); in srp_process_rsp()
1960 scsi_set_resid(scmnd, -be32_to_cpu(rsp->data_in_res_cnt)); in srp_process_rsp()
1962 scsi_set_resid(scmnd, be32_to_cpu(rsp->data_out_res_cnt)); in srp_process_rsp()
1964 scsi_set_resid(scmnd, -be32_to_cpu(rsp->data_out_res_cnt)); in srp_process_rsp()
1966 srp_free_req(ch, req, scmnd, in srp_process_rsp()
1969 scmnd->host_scribble = NULL; in srp_process_rsp()
1970 scmnd->scsi_done(scmnd); in srp_process_rsp()
2132 static int srp_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *scmnd) in srp_queuecommand() argument
2156 scmnd->result = srp_chkready(target->rport); in srp_queuecommand()
2157 if (unlikely(scmnd->result)) in srp_queuecommand()
2160 WARN_ON_ONCE(scmnd->request->tag < 0); in srp_queuecommand()
2161 tag = blk_mq_unique_tag(scmnd->request); in srp_queuecommand()
2180 scmnd->host_scribble = (void *) req; in srp_queuecommand()
2186 int_to_scsilun(scmnd->device->lun, &cmd->lun); in srp_queuecommand()
2188 memcpy(cmd->cdb, scmnd->cmnd, scmnd->cmd_len); in srp_queuecommand()
2190 req->scmnd = scmnd; in srp_queuecommand()
2193 len = srp_map_data(scmnd, ch, req); in srp_queuecommand()
2203 scmnd->result = len == -ENOMEM ? in srp_queuecommand()
2213 scmnd->result = DID_ERROR << 16; in srp_queuecommand()
2226 srp_unmap_data(scmnd, ch, req); in srp_queuecommand()
2235 req->scmnd = NULL; in srp_queuecommand()
2238 if (scmnd->result) { in srp_queuecommand()
2239 scmnd->scsi_done(scmnd); in srp_queuecommand()
2631 static int srp_abort(struct scsi_cmnd *scmnd) in srp_abort() argument
2633 struct srp_target_port *target = host_to_target(scmnd->device->host); in srp_abort()
2634 struct srp_request *req = (struct srp_request *) scmnd->host_scribble; in srp_abort()
2644 tag = blk_mq_unique_tag(scmnd->request); in srp_abort()
2649 if (!srp_claim_req(ch, req, NULL, scmnd)) in srp_abort()
2653 if (srp_send_tsk_mgmt(ch, tag, scmnd->device->lun, in srp_abort()
2661 srp_free_req(ch, req, scmnd, 0); in srp_abort()
2662 scmnd->result = DID_ABORT << 16; in srp_abort()
2663 scmnd->scsi_done(scmnd); in srp_abort()
2669 static int srp_reset_device(struct scsi_cmnd *scmnd) in srp_reset_device() argument
2671 struct srp_target_port *target = host_to_target(scmnd->device->host); in srp_reset_device()
2678 if (srp_send_tsk_mgmt(ch, SRP_TAG_NO_REQ, scmnd->device->lun, in srp_reset_device()
2687 static int srp_reset_host(struct scsi_cmnd *scmnd) in srp_reset_host() argument
2689 struct srp_target_port *target = host_to_target(scmnd->device->host); in srp_reset_host()