Lines Matching refs:scmnd

1174 static void srp_unmap_data(struct scsi_cmnd *scmnd,
1183 if (!scsi_sglist(scmnd) ||
1184 (scmnd->sc_data_direction != DMA_TO_DEVICE &&
1185 scmnd->sc_data_direction != DMA_FROM_DEVICE))
1206 ib_dma_unmap_sg(ibdev, scsi_sglist(scmnd), scsi_sg_count(scmnd),
1207 scmnd->sc_data_direction);
1211 * srp_claim_req - Take ownership of the scmnd associated with a request.
1215 * @scmnd: If NULL, take ownership of @req->scmnd. If not NULL, only take
1216 * ownership of @req->scmnd if it equals @scmnd.
1224 struct scsi_cmnd *scmnd)
1229 if (req->scmnd &&
1230 (!sdev || req->scmnd->device == sdev) &&
1231 (!scmnd || req->scmnd == scmnd)) {
1232 scmnd = req->scmnd;
1233 req->scmnd = NULL;
1235 scmnd = NULL;
1239 return scmnd;
1246 * @scmnd: SCSI command associated with @req.
1250 struct scsi_cmnd *scmnd, s32 req_lim_delta)
1254 srp_unmap_data(scmnd, ch, req);
1264 struct scsi_cmnd *scmnd = srp_claim_req(ch, req, sdev, NULL);
1266 if (scmnd) {
1267 srp_free_req(ch, req, scmnd, 0);
1268 scmnd->result = result;
1269 scmnd->scsi_done(scmnd);
1278 static bool srp_terminate_cmd(struct scsi_cmnd *scmnd, void *context_ptr,
1283 u32 tag = blk_mq_unique_tag(scmnd->request);
1285 struct srp_request *req = scsi_cmd_priv(scmnd);
1463 dev_name(&req->scmnd->device->sdev_gendev), sg_nents,
1602 if (desc_len != scsi_bufflen(req->scmnd) ||
1603 mr_len > scsi_bufflen(req->scmnd))
1605 scsi_bufflen(req->scmnd), desc_len, mr_len,
1611 * @scmnd: SCSI command to map
1619 static int srp_map_data(struct scsi_cmnd *scmnd, struct srp_rdma_ch *ch,
1637 if (!scsi_sglist(scmnd) || scmnd->sc_data_direction == DMA_NONE)
1640 if (scmnd->sc_data_direction != DMA_FROM_DEVICE &&
1641 scmnd->sc_data_direction != DMA_TO_DEVICE) {
1644 scmnd->sc_data_direction);
1648 nents = scsi_sg_count(scmnd);
1649 scat = scsi_sglist(scmnd);
1650 data_len = scsi_bufflen(scmnd);
1655 count = ib_dma_map_sg(ibdev, scat, nents, scmnd->sc_data_direction);
1662 scmnd->sc_data_direction == DMA_TO_DEVICE) {
1782 if (scmnd->sc_data_direction == DMA_TO_DEVICE)
1791 if (scmnd->sc_data_direction == DMA_TO_DEVICE)
1799 srp_unmap_data(scmnd, ch, req);
1936 struct scsi_cmnd *scmnd;
1954 scmnd = scsi_host_find_tag(target->scsi_host, rsp->tag);
1955 if (scmnd) {
1956 req = scsi_cmd_priv(scmnd);
1957 scmnd = srp_claim_req(ch, req, NULL, scmnd);
1959 if (!scmnd) {
1961 "Null scmnd for RSP w/tag %#016llx received on ch %td / QP %#x\n",
1970 scmnd->result = rsp->status;
1973 memcpy(scmnd->sense_buffer, rsp->data +
1980 scsi_set_resid(scmnd, be32_to_cpu(rsp->data_in_res_cnt));
1982 scsi_set_resid(scmnd, be32_to_cpu(rsp->data_out_res_cnt));
1984 srp_free_req(ch, req, scmnd,
1987 scmnd->scsi_done(scmnd);
2150 static int srp_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *scmnd)
2154 struct srp_request *req = scsi_cmd_priv(scmnd);
2162 scmnd->result = srp_chkready(target->rport);
2163 if (unlikely(scmnd->result))
2166 WARN_ON_ONCE(scmnd->request->tag < 0);
2167 tag = blk_mq_unique_tag(scmnd->request);
2185 int_to_scsilun(scmnd->device->lun, &cmd->lun);
2187 memcpy(cmd->cdb, scmnd->cmnd, scmnd->cmd_len);
2188 if (unlikely(scmnd->cmd_len > sizeof(cmd->cdb))) {
2189 cmd->add_cdb_len = round_up(scmnd->cmd_len - sizeof(cmd->cdb),
2195 req->scmnd = scmnd;
2198 len = srp_map_data(scmnd, ch, req);
2208 scmnd->result = len == -ENOMEM ?
2218 scmnd->result = DID_ERROR << 16;
2225 srp_unmap_data(scmnd, ch, req);
2234 req->scmnd = NULL;
2237 if (scmnd->result) {
2238 scmnd->scsi_done(scmnd);
2778 static int srp_abort(struct scsi_cmnd *scmnd)
2780 struct srp_target_port *target = host_to_target(scmnd->device->host);
2781 struct srp_request *req = scsi_cmd_priv(scmnd);
2788 tag = blk_mq_unique_tag(scmnd->request);
2793 if (!srp_claim_req(ch, req, NULL, scmnd))
2797 if (srp_send_tsk_mgmt(ch, tag, scmnd->device->lun,
2799 srp_free_req(ch, req, scmnd, 0);
2808 static int srp_reset_device(struct scsi_cmnd *scmnd)
2810 struct srp_target_port *target = host_to_target(scmnd->device->host);
2817 if (srp_send_tsk_mgmt(ch, SRP_TAG_NO_REQ, scmnd->device->lun,
2826 static int srp_reset_host(struct scsi_cmnd *scmnd)
2828 struct srp_target_port *target = host_to_target(scmnd->device->host);