Lines Matching refs:scmnd

1242 static void srp_unmap_data(struct scsi_cmnd *scmnd,  in srp_unmap_data()  argument
1251 if (!scsi_sglist(scmnd) || in srp_unmap_data()
1252 (scmnd->sc_data_direction != DMA_TO_DEVICE && in srp_unmap_data()
1253 scmnd->sc_data_direction != DMA_FROM_DEVICE)) in srp_unmap_data()
1279 ib_dma_unmap_sg(ibdev, scsi_sglist(scmnd), scsi_sg_count(scmnd), in srp_unmap_data()
1280 scmnd->sc_data_direction); in srp_unmap_data()
1297 struct scsi_cmnd *scmnd) in srp_claim_req() argument
1302 if (req->scmnd && in srp_claim_req()
1303 (!sdev || req->scmnd->device == sdev) && in srp_claim_req()
1304 (!scmnd || req->scmnd == scmnd)) { in srp_claim_req()
1305 scmnd = req->scmnd; in srp_claim_req()
1306 req->scmnd = NULL; in srp_claim_req()
1308 scmnd = NULL; in srp_claim_req()
1312 return scmnd; in srp_claim_req()
1323 struct scsi_cmnd *scmnd, s32 req_lim_delta) in srp_free_req() argument
1327 srp_unmap_data(scmnd, ch, req); in srp_free_req()
1337 struct scsi_cmnd *scmnd = srp_claim_req(ch, req, sdev, NULL); in srp_finish_req() local
1339 if (scmnd) { in srp_finish_req()
1340 srp_free_req(ch, req, scmnd, 0); in srp_finish_req()
1341 scmnd->result = result; in srp_finish_req()
1342 scmnd->scsi_done(scmnd); in srp_finish_req()
1564 dev_name(&req->scmnd->device->sdev_gendev), sg_nents, in srp_map_finish_fr()
1783 if (desc_len != scsi_bufflen(req->scmnd) || in srp_check_mapping()
1784 mr_len > scsi_bufflen(req->scmnd)) in srp_check_mapping()
1786 scsi_bufflen(req->scmnd), desc_len, mr_len, in srp_check_mapping()
1800 static int srp_map_data(struct scsi_cmnd *scmnd, struct srp_rdma_ch *ch, in srp_map_data() argument
1818 if (!scsi_sglist(scmnd) || scmnd->sc_data_direction == DMA_NONE) in srp_map_data()
1821 if (scmnd->sc_data_direction != DMA_FROM_DEVICE && in srp_map_data()
1822 scmnd->sc_data_direction != DMA_TO_DEVICE) { in srp_map_data()
1825 scmnd->sc_data_direction); in srp_map_data()
1829 nents = scsi_sg_count(scmnd); in srp_map_data()
1830 scat = scsi_sglist(scmnd); in srp_map_data()
1831 data_len = scsi_bufflen(scmnd); in srp_map_data()
1836 count = ib_dma_map_sg(ibdev, scat, nents, scmnd->sc_data_direction); in srp_map_data()
1843 scmnd->sc_data_direction == DMA_TO_DEVICE) { in srp_map_data()
1965 if (scmnd->sc_data_direction == DMA_TO_DEVICE) in srp_map_data()
1974 if (scmnd->sc_data_direction == DMA_TO_DEVICE) in srp_map_data()
1982 srp_unmap_data(scmnd, ch, req); in srp_map_data()
2119 struct scsi_cmnd *scmnd; in srp_process_rsp() local
2137 scmnd = scsi_host_find_tag(target->scsi_host, rsp->tag); in srp_process_rsp()
2138 if (scmnd && scmnd->host_scribble) { in srp_process_rsp()
2139 req = (void *)scmnd->host_scribble; in srp_process_rsp()
2140 scmnd = srp_claim_req(ch, req, NULL, scmnd); in srp_process_rsp()
2142 scmnd = NULL; in srp_process_rsp()
2144 if (!scmnd) { in srp_process_rsp()
2155 scmnd->result = rsp->status; in srp_process_rsp()
2158 memcpy(scmnd->sense_buffer, rsp->data + in srp_process_rsp()
2165 scsi_set_resid(scmnd, be32_to_cpu(rsp->data_in_res_cnt)); in srp_process_rsp()
2167 scsi_set_resid(scmnd, -be32_to_cpu(rsp->data_in_res_cnt)); in srp_process_rsp()
2169 scsi_set_resid(scmnd, be32_to_cpu(rsp->data_out_res_cnt)); in srp_process_rsp()
2171 scsi_set_resid(scmnd, -be32_to_cpu(rsp->data_out_res_cnt)); in srp_process_rsp()
2173 srp_free_req(ch, req, scmnd, in srp_process_rsp()
2176 scmnd->host_scribble = NULL; in srp_process_rsp()
2177 scmnd->scsi_done(scmnd); in srp_process_rsp()
2340 static int srp_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *scmnd) in srp_queuecommand() argument
2353 scmnd->result = srp_chkready(target->rport); in srp_queuecommand()
2354 if (unlikely(scmnd->result)) in srp_queuecommand()
2357 WARN_ON_ONCE(scmnd->request->tag < 0); in srp_queuecommand()
2358 tag = blk_mq_unique_tag(scmnd->request); in srp_queuecommand()
2377 scmnd->host_scribble = (void *) req; in srp_queuecommand()
2383 int_to_scsilun(scmnd->device->lun, &cmd->lun); in srp_queuecommand()
2385 memcpy(cmd->cdb, scmnd->cmnd, scmnd->cmd_len); in srp_queuecommand()
2386 if (unlikely(scmnd->cmd_len > sizeof(cmd->cdb))) { in srp_queuecommand()
2387 cmd->add_cdb_len = round_up(scmnd->cmd_len - sizeof(cmd->cdb), in srp_queuecommand()
2393 req->scmnd = scmnd; in srp_queuecommand()
2396 len = srp_map_data(scmnd, ch, req); in srp_queuecommand()
2406 scmnd->result = len == -ENOMEM ? in srp_queuecommand()
2416 scmnd->result = DID_ERROR << 16; in srp_queuecommand()
2423 srp_unmap_data(scmnd, ch, req); in srp_queuecommand()
2432 req->scmnd = NULL; in srp_queuecommand()
2435 if (scmnd->result) { in srp_queuecommand()
2436 scmnd->scsi_done(scmnd); in srp_queuecommand()
2974 static int srp_abort(struct scsi_cmnd *scmnd) in srp_abort() argument
2976 struct srp_target_port *target = host_to_target(scmnd->device->host); in srp_abort()
2977 struct srp_request *req = (struct srp_request *) scmnd->host_scribble; in srp_abort()
2987 tag = blk_mq_unique_tag(scmnd->request); in srp_abort()
2992 if (!srp_claim_req(ch, req, NULL, scmnd)) in srp_abort()
2996 if (srp_send_tsk_mgmt(ch, tag, scmnd->device->lun, in srp_abort()
3004 srp_free_req(ch, req, scmnd, 0); in srp_abort()
3005 scmnd->result = DID_ABORT << 16; in srp_abort()
3006 scmnd->scsi_done(scmnd); in srp_abort()
3012 static int srp_reset_device(struct scsi_cmnd *scmnd) in srp_reset_device() argument
3014 struct srp_target_port *target = host_to_target(scmnd->device->host); in srp_reset_device()
3021 if (srp_send_tsk_mgmt(ch, SRP_TAG_NO_REQ, scmnd->device->lun, in srp_reset_device()
3030 static int srp_reset_host(struct scsi_cmnd *scmnd) in srp_reset_host() argument
3032 struct srp_target_port *target = host_to_target(scmnd->device->host); in srp_reset_host()