Lines Matching refs:pending_req
221 struct vscsibk_pend *pending_req)
223 struct scsiback_tpg *tpg = pending_req->v2p->tpg;
226 tpg->tport->tport_name, pending_req->v2p->lun,
227 pending_req->cmnd[0], status_byte(errors), msg_byte(errors),
324 uint32_t resid, struct vscsibk_pend *pending_req)
326 scsiback_send_response(pending_req->info, sense_buffer, result,
327 resid, pending_req->rqid);
329 if (pending_req->v2p)
330 kref_put(&pending_req->v2p->kref,
334 static void scsiback_cmd_done(struct vscsibk_pend *pending_req)
336 struct vscsibk_info *info = pending_req->info;
341 sense_buffer = pending_req->sense_buffer;
342 resid = pending_req->se_cmd.residual_count;
343 errors = pending_req->result;
346 scsiback_print_status(sense_buffer, errors, pending_req);
348 scsiback_fast_flush_area(pending_req);
349 scsiback_do_resp_with_sense(sense_buffer, errors, resid, pending_req);
356 target_put_sess_cmd(&pending_req->se_cmd);
359 static void scsiback_cmd_exec(struct vscsibk_pend *pending_req)
361 struct se_cmd *se_cmd = &pending_req->se_cmd;
362 struct se_session *sess = pending_req->v2p->tpg->tpg_nexus->tvn_se_sess;
365 scsiback_get(pending_req->info);
366 se_cmd->tag = pending_req->rqid;
367 rc = target_submit_cmd_map_sgls(se_cmd, sess, pending_req->cmnd,
368 pending_req->sense_buffer, pending_req->v2p->lun,
369 pending_req->data_len, 0,
370 pending_req->sc_data_direction, TARGET_SCF_ACK_KREF,
371 pending_req->sgl, pending_req->n_sg,
403 static int scsiback_gnttab_data_map_list(struct vscsibk_pend *pending_req,
409 struct vscsibk_info *info = pending_req->info;
425 pending_req->n_grants += mapcount;
431 pending_req->n_grants += mapcount;
436 struct vscsibk_pend *pending_req)
448 pending_req->n_sg = 0;
449 pending_req->n_grants = 0;
450 pending_req->data_len = 0;
463 err = scsiback_gnttab_data_map_list(pending_req, ring_req->seg,
464 pending_req->pages, pending_req->grant_handles,
487 pending_req->sgl = kmalloc_array(nr_segments,
489 if (!pending_req->sgl)
492 sg_init_table(pending_req->sgl, nr_segments);
493 pending_req->n_sg = nr_segments;
496 if (pending_req->sc_data_direction == DMA_TO_DEVICE)
499 pg = pending_req->pages + nr_sgl;
500 grant = pending_req->grant_handles + nr_sgl;
503 err = scsiback_gnttab_data_map_list(pending_req, seg,
510 vaddr(pending_req, i) + ring_req->seg[i].offset);
513 err = scsiback_gnttab_data_map_list(pending_req, seg,
520 end_seg = vaddr(pending_req, 0) + ring_req->seg[0].offset;
523 pg = pending_req->pages + nr_sgl;
526 for_each_sg(pending_req->sgl, sg, nr_segments, i) {
528 pending_req->data_len += seg->length;
532 end_seg = vaddr(pending_req, i_seg) +
556 static void scsiback_device_action(struct vscsibk_pend *pending_req,
559 struct scsiback_tpg *tpg = pending_req->v2p->tpg;
561 struct se_cmd *se_cmd = &pending_req->se_cmd;
562 u64 unpacked_lun = pending_req->v2p->lun;
565 init_completion(&pending_req->tmr_done);
567 rc = target_submit_tmr(&pending_req->se_cmd, nexus->tvn_se_sess,
568 &pending_req->sense_buffer[0],
574 wait_for_completion(&pending_req->tmr_done);
579 scsiback_do_resp_with_sense(NULL, err, 0, pending_req);
580 transport_generic_free_cmd(&pending_req->se_cmd, 0);
584 scsiback_do_resp_with_sense(NULL, err, 0, pending_req);
643 struct vscsibk_pend *pending_req;
673 pending_req = scsiback_get_pend_req(ring, v2p);
674 if (IS_ERR(pending_req)) {
678 pending_req->rqid = ring_req->rqid;
679 pending_req->info = info;
680 pending_req->v2p = v2p;
681 pending_req->sc_data_direction = ring_req->sc_data_direction;
682 pending_req->cmd_len = ring_req->cmd_len;
683 memcpy(pending_req->cmnd, ring_req->cmnd, pending_req->cmd_len);
685 return pending_req;
693 struct vscsibk_pend *pending_req;
718 pending_req = prepare_pending_reqs(info, ring, &ring_req);
719 if (IS_ERR(pending_req)) {
720 switch (PTR_ERR(pending_req)) {
735 if (scsiback_gnttab_data_map(&ring_req, pending_req)) {
736 scsiback_fast_flush_area(pending_req);
738 DRIVER_ERROR << 24, 0, pending_req);
739 transport_generic_free_cmd(&pending_req->se_cmd, 0);
741 scsiback_cmd_exec(pending_req);
745 scsiback_device_action(pending_req, TMR_ABORT_TASK,
749 scsiback_device_action(pending_req, TMR_LUN_RESET, 0);
754 pending_req);
755 transport_generic_free_cmd(&pending_req->se_cmd, 0);
1391 struct vscsibk_pend *pending_req = container_of(se_cmd,
1394 pending_req->result = SAM_STAT_GOOD;
1395 scsiback_cmd_done(pending_req);
1401 struct vscsibk_pend *pending_req = container_of(se_cmd,
1407 pending_req->result = (DRIVER_SENSE << 24) |
1410 pending_req->result = se_cmd->scsi_status;
1412 scsiback_cmd_done(pending_req);
1418 struct vscsibk_pend *pending_req = container_of(se_cmd,
1421 complete(&pending_req->tmr_done);