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
1289 u32 tag = blk_mq_unique_tag(scsi_cmd_to_rq(scmnd)); in srp_terminate_cmd()
1291 struct srp_request *req = scsi_cmd_priv(scmnd); in srp_terminate_cmd()
1469 dev_name(&req->scmnd->device->sdev_gendev), sg_nents, in srp_map_finish_fr()
1608 if (desc_len != scsi_bufflen(req->scmnd) || in srp_check_mapping()
1609 mr_len > scsi_bufflen(req->scmnd)) in srp_check_mapping()
1611 scsi_bufflen(req->scmnd), desc_len, mr_len, in srp_check_mapping()
1625 static int srp_map_data(struct scsi_cmnd *scmnd, struct srp_rdma_ch *ch, in srp_map_data() argument
1643 if (!scsi_sglist(scmnd) || scmnd->sc_data_direction == DMA_NONE) in srp_map_data()
1646 if (scmnd->sc_data_direction != DMA_FROM_DEVICE && in srp_map_data()
1647 scmnd->sc_data_direction != DMA_TO_DEVICE) { in srp_map_data()
1650 scmnd->sc_data_direction); in srp_map_data()
1654 nents = scsi_sg_count(scmnd); in srp_map_data()
1655 scat = scsi_sglist(scmnd); in srp_map_data()
1656 data_len = scsi_bufflen(scmnd); in srp_map_data()
1661 count = ib_dma_map_sg(ibdev, scat, nents, scmnd->sc_data_direction); in srp_map_data()
1668 scmnd->sc_data_direction == DMA_TO_DEVICE) { in srp_map_data()
1788 if (scmnd->sc_data_direction == DMA_TO_DEVICE) in srp_map_data()
1797 if (scmnd->sc_data_direction == DMA_TO_DEVICE) in srp_map_data()
1805 srp_unmap_data(scmnd, ch, req); in srp_map_data()
1942 struct scsi_cmnd *scmnd; in srp_process_rsp() local
1960 scmnd = scsi_host_find_tag(target->scsi_host, rsp->tag); in srp_process_rsp()
1961 if (scmnd) { in srp_process_rsp()
1962 req = scsi_cmd_priv(scmnd); in srp_process_rsp()
1963 scmnd = srp_claim_req(ch, req, NULL, scmnd); in srp_process_rsp()
1965 if (!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 = scsi_cmd_priv(scmnd); in srp_abort()
2800 tag = blk_mq_unique_tag(scsi_cmd_to_rq(scmnd)); in srp_abort()
2805 if (!srp_claim_req(ch, req, NULL, scmnd)) in srp_abort()
2809 if (srp_send_tsk_mgmt(ch, tag, scmnd->device->lun, in srp_abort()
2817 srp_free_req(ch, req, scmnd, 0); in srp_abort()
2818 scmnd->result = DID_ABORT << 16; in srp_abort()
2819 scsi_done(scmnd); in srp_abort()
2825 static int srp_reset_device(struct scsi_cmnd *scmnd) in srp_reset_device() argument
2827 struct srp_target_port *target = host_to_target(scmnd->device->host); in srp_reset_device()
2834 if (srp_send_tsk_mgmt(ch, SRP_TAG_NO_REQ, scmnd->device->lun, in srp_reset_device()
2843 static int srp_reset_host(struct scsi_cmnd *scmnd) in srp_reset_host() argument
2845 struct srp_target_port *target = host_to_target(scmnd->device->host); in srp_reset_host()