Lines Matching refs:scmnd

1181 static void srp_unmap_data(struct scsi_cmnd *scmnd,  in srp_unmap_data()  argument
1190 if (!scsi_sglist(scmnd) || in srp_unmap_data()
1191 (scmnd->sc_data_direction != DMA_TO_DEVICE && in srp_unmap_data()
1192 scmnd->sc_data_direction != DMA_FROM_DEVICE)) in srp_unmap_data()
1213 ib_dma_unmap_sg(ibdev, scsi_sglist(scmnd), scsi_sg_count(scmnd), in srp_unmap_data()
1214 scmnd->sc_data_direction); in srp_unmap_data()
1231 struct scsi_cmnd *scmnd) in srp_claim_req() argument
1236 if (req->scmnd && in srp_claim_req()
1237 (!sdev || req->scmnd->device == sdev) && in srp_claim_req()
1238 (!scmnd || req->scmnd == scmnd)) { in srp_claim_req()
1239 scmnd = req->scmnd; in srp_claim_req()
1240 req->scmnd = NULL; in srp_claim_req()
1242 scmnd = NULL; in srp_claim_req()
1246 return scmnd; in srp_claim_req()
1257 struct scsi_cmnd *scmnd, s32 req_lim_delta) in srp_free_req() argument
1261 srp_unmap_data(scmnd, ch, req); in srp_free_req()
1271 struct scsi_cmnd *scmnd = srp_claim_req(ch, req, sdev, NULL); in srp_finish_req() local
1273 if (scmnd) { in srp_finish_req()
1274 srp_free_req(ch, req, scmnd, 0); in srp_finish_req()
1275 scmnd->result = result; in srp_finish_req()
1276 scsi_done(scmnd); in srp_finish_req()
1285 static bool srp_terminate_cmd(struct scsi_cmnd *scmnd, void *context_ptr, in srp_terminate_cmd() argument
1290 u32 tag = blk_mq_unique_tag(scsi_cmd_to_rq(scmnd)); in srp_terminate_cmd()
1292 struct srp_request *req = scsi_cmd_priv(scmnd); in srp_terminate_cmd()
1470 dev_name(&req->scmnd->device->sdev_gendev), sg_nents, in srp_map_finish_fr()
1609 if (desc_len != scsi_bufflen(req->scmnd) || in srp_check_mapping()
1610 mr_len > scsi_bufflen(req->scmnd)) in srp_check_mapping()
1612 scsi_bufflen(req->scmnd), desc_len, mr_len, in srp_check_mapping()
1626 static int srp_map_data(struct scsi_cmnd *scmnd, struct srp_rdma_ch *ch, in srp_map_data() argument
1644 if (!scsi_sglist(scmnd) || scmnd->sc_data_direction == DMA_NONE) in srp_map_data()
1647 if (scmnd->sc_data_direction != DMA_FROM_DEVICE && in srp_map_data()
1648 scmnd->sc_data_direction != DMA_TO_DEVICE) { in srp_map_data()
1651 scmnd->sc_data_direction); in srp_map_data()
1655 nents = scsi_sg_count(scmnd); in srp_map_data()
1656 scat = scsi_sglist(scmnd); in srp_map_data()
1657 data_len = scsi_bufflen(scmnd); in srp_map_data()
1662 count = ib_dma_map_sg(ibdev, scat, nents, scmnd->sc_data_direction); in srp_map_data()
1669 scmnd->sc_data_direction == DMA_TO_DEVICE) { in srp_map_data()
1789 if (scmnd->sc_data_direction == DMA_TO_DEVICE) in srp_map_data()
1798 if (scmnd->sc_data_direction == DMA_TO_DEVICE) in srp_map_data()
1806 srp_unmap_data(scmnd, ch, req); in srp_map_data()
1943 struct scsi_cmnd *scmnd; in srp_process_rsp() local
1961 scmnd = scsi_host_find_tag(target->scsi_host, rsp->tag); in srp_process_rsp()
1962 if (scmnd) { in srp_process_rsp()
1963 req = scsi_cmd_priv(scmnd); in srp_process_rsp()
1964 scmnd = srp_claim_req(ch, req, NULL, scmnd); in srp_process_rsp()
1976 scmnd->result = rsp->status; in srp_process_rsp()
1979 memcpy(scmnd->sense_buffer, rsp->data + in srp_process_rsp()
1986 scsi_set_resid(scmnd, be32_to_cpu(rsp->data_in_res_cnt)); in srp_process_rsp()
1988 scsi_set_resid(scmnd, -be32_to_cpu(rsp->data_in_res_cnt)); in srp_process_rsp()
1990 scsi_set_resid(scmnd, be32_to_cpu(rsp->data_out_res_cnt)); in srp_process_rsp()
1992 scsi_set_resid(scmnd, -be32_to_cpu(rsp->data_out_res_cnt)); in srp_process_rsp()
1994 srp_free_req(ch, req, scmnd, in srp_process_rsp()
1997 scsi_done(scmnd); in srp_process_rsp()
2160 static int srp_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *scmnd) in srp_queuecommand() argument
2162 struct request *rq = scsi_cmd_to_rq(scmnd); in srp_queuecommand()
2165 struct srp_request *req = scsi_cmd_priv(scmnd); in srp_queuecommand()
2173 scmnd->result = srp_chkready(target->rport); in srp_queuecommand()
2174 if (unlikely(scmnd->result)) in srp_queuecommand()
2196 int_to_scsilun(scmnd->device->lun, &cmd->lun); in srp_queuecommand()
2198 memcpy(cmd->cdb, scmnd->cmnd, scmnd->cmd_len); in srp_queuecommand()
2199 if (unlikely(scmnd->cmd_len > sizeof(cmd->cdb))) { in srp_queuecommand()
2200 cmd->add_cdb_len = round_up(scmnd->cmd_len - sizeof(cmd->cdb), in srp_queuecommand()
2206 req->scmnd = scmnd; in srp_queuecommand()
2209 len = srp_map_data(scmnd, ch, req); in srp_queuecommand()
2219 scmnd->result = len == -ENOMEM ? in srp_queuecommand()
2229 scmnd->result = DID_ERROR << 16; in srp_queuecommand()
2236 srp_unmap_data(scmnd, ch, req); in srp_queuecommand()
2245 req->scmnd = NULL; in srp_queuecommand()
2248 if (scmnd->result) { in srp_queuecommand()
2249 scsi_done(scmnd); in srp_queuecommand()
2789 static int srp_abort(struct scsi_cmnd *scmnd) in srp_abort() argument
2791 struct srp_target_port *target = host_to_target(scmnd->device->host); in srp_abort()
2792 struct srp_request *req = (struct srp_request *) scmnd->host_scribble; in srp_abort()
2802 tag = blk_mq_unique_tag(scsi_cmd_to_rq(scmnd)); in srp_abort()
2807 if (!srp_claim_req(ch, req, NULL, scmnd)) in srp_abort()
2811 if (srp_send_tsk_mgmt(ch, tag, scmnd->device->lun, in srp_abort()
2819 srp_free_req(ch, req, scmnd, 0); in srp_abort()
2820 scmnd->result = DID_ABORT << 16; in srp_abort()
2821 scsi_done(scmnd); in srp_abort()
2827 static int srp_reset_device(struct scsi_cmnd *scmnd) in srp_reset_device() argument
2829 struct srp_target_port *target = host_to_target(scmnd->device->host); in srp_reset_device()
2836 if (srp_send_tsk_mgmt(ch, SRP_TAG_NO_REQ, scmnd->device->lun, in srp_reset_device()
2845 static int srp_reset_host(struct scsi_cmnd *scmnd) in srp_reset_host() argument
2847 struct srp_target_port *target = host_to_target(scmnd->device->host); in srp_reset_host()