Lines Matching refs:pending_req

268 					struct vscsibk_pend *pending_req)  in scsiback_print_status()  argument
270 struct scsiback_tpg *tpg = pending_req->v2p->tpg; in scsiback_print_status()
273 tpg->tport->tport_name, pending_req->v2p->lun, in scsiback_print_status()
274 pending_req->cmnd[0], status_byte(errors), msg_byte(errors), in scsiback_print_status()
332 uint32_t resid, struct vscsibk_pend *pending_req) in scsiback_do_resp_with_sense() argument
335 struct vscsibk_info *info = pending_req->info; in scsiback_do_resp_with_sense()
347 ring_res->rqid = pending_req->rqid; in scsiback_do_resp_with_sense()
368 if (pending_req->v2p) in scsiback_do_resp_with_sense()
369 kref_put(&pending_req->v2p->kref, in scsiback_do_resp_with_sense()
373 static void scsiback_cmd_done(struct vscsibk_pend *pending_req) in scsiback_cmd_done() argument
375 struct vscsibk_info *info = pending_req->info; in scsiback_cmd_done()
380 sense_buffer = pending_req->sense_buffer; in scsiback_cmd_done()
381 resid = pending_req->se_cmd.residual_count; in scsiback_cmd_done()
382 errors = pending_req->result; in scsiback_cmd_done()
385 scsiback_print_status(sense_buffer, errors, pending_req); in scsiback_cmd_done()
387 scsiback_fast_flush_area(pending_req); in scsiback_cmd_done()
388 scsiback_do_resp_with_sense(sense_buffer, errors, resid, pending_req); in scsiback_cmd_done()
392 static void scsiback_cmd_exec(struct vscsibk_pend *pending_req) in scsiback_cmd_exec() argument
394 struct se_cmd *se_cmd = &pending_req->se_cmd; in scsiback_cmd_exec()
395 struct se_session *sess = pending_req->v2p->tpg->tpg_nexus->tvn_se_sess; in scsiback_cmd_exec()
398 memset(pending_req->sense_buffer, 0, VSCSIIF_SENSE_BUFFERSIZE); in scsiback_cmd_exec()
402 scsiback_get(pending_req->info); in scsiback_cmd_exec()
403 rc = target_submit_cmd_map_sgls(se_cmd, sess, pending_req->cmnd, in scsiback_cmd_exec()
404 pending_req->sense_buffer, pending_req->v2p->lun, in scsiback_cmd_exec()
405 pending_req->data_len, 0, in scsiback_cmd_exec()
406 pending_req->sc_data_direction, 0, in scsiback_cmd_exec()
407 pending_req->sgl, pending_req->n_sg, in scsiback_cmd_exec()
439 static int scsiback_gnttab_data_map_list(struct vscsibk_pend *pending_req, in scsiback_gnttab_data_map_list() argument
445 struct vscsibk_info *info = pending_req->info; in scsiback_gnttab_data_map_list()
461 pending_req->n_grants += mapcount; in scsiback_gnttab_data_map_list()
467 pending_req->n_grants += mapcount; in scsiback_gnttab_data_map_list()
472 struct vscsibk_pend *pending_req) in scsiback_gnttab_data_map() argument
484 pending_req->n_sg = 0; in scsiback_gnttab_data_map()
485 pending_req->n_grants = 0; in scsiback_gnttab_data_map()
486 pending_req->data_len = 0; in scsiback_gnttab_data_map()
499 err = scsiback_gnttab_data_map_list(pending_req, ring_req->seg, in scsiback_gnttab_data_map()
500 pending_req->pages, pending_req->grant_handles, in scsiback_gnttab_data_map()
523 pending_req->sgl = kmalloc_array(nr_segments, in scsiback_gnttab_data_map()
525 if (!pending_req->sgl) in scsiback_gnttab_data_map()
528 sg_init_table(pending_req->sgl, nr_segments); in scsiback_gnttab_data_map()
529 pending_req->n_sg = nr_segments; in scsiback_gnttab_data_map()
532 if (pending_req->sc_data_direction == DMA_TO_DEVICE) in scsiback_gnttab_data_map()
535 pg = pending_req->pages + nr_sgl; in scsiback_gnttab_data_map()
536 grant = pending_req->grant_handles + nr_sgl; in scsiback_gnttab_data_map()
539 err = scsiback_gnttab_data_map_list(pending_req, seg, in scsiback_gnttab_data_map()
546 vaddr(pending_req, i) + ring_req->seg[i].offset); in scsiback_gnttab_data_map()
549 err = scsiback_gnttab_data_map_list(pending_req, seg, in scsiback_gnttab_data_map()
556 end_seg = vaddr(pending_req, 0) + ring_req->seg[0].offset; in scsiback_gnttab_data_map()
559 pg = pending_req->pages + nr_sgl; in scsiback_gnttab_data_map()
562 for_each_sg(pending_req->sgl, sg, nr_segments, i) { in scsiback_gnttab_data_map()
564 pending_req->data_len += seg->length; in scsiback_gnttab_data_map()
568 end_seg = vaddr(pending_req, i_seg) + in scsiback_gnttab_data_map()
592 static void scsiback_device_action(struct vscsibk_pend *pending_req, in scsiback_device_action() argument
596 struct scsiback_tpg *tpg = pending_req->v2p->tpg; in scsiback_device_action()
597 struct se_cmd *se_cmd = &pending_req->se_cmd; in scsiback_device_action()
608 &pending_req->sense_buffer[0]); in scsiback_device_action()
616 if (transport_lookup_tmr_lun(se_cmd, pending_req->v2p->lun) < 0) in scsiback_device_action()
627 transport_generic_free_cmd(&pending_req->se_cmd, 1); in scsiback_device_action()
631 scsiback_do_resp_with_sense(NULL, err, 0, pending_req); in scsiback_device_action()
633 kmem_cache_free(scsiback_cachep, pending_req); in scsiback_device_action()
664 struct vscsibk_pend *pending_req) in prepare_pending_reqs() argument
669 pending_req->rqid = ring_req->rqid; in prepare_pending_reqs()
670 pending_req->info = info; in prepare_pending_reqs()
678 pending_req->v2p = NULL; in prepare_pending_reqs()
683 pending_req->v2p = v2p; in prepare_pending_reqs()
686 pending_req->sc_data_direction = ring_req->sc_data_direction; in prepare_pending_reqs()
687 if ((pending_req->sc_data_direction != DMA_BIDIRECTIONAL) && in prepare_pending_reqs()
688 (pending_req->sc_data_direction != DMA_TO_DEVICE) && in prepare_pending_reqs()
689 (pending_req->sc_data_direction != DMA_FROM_DEVICE) && in prepare_pending_reqs()
690 (pending_req->sc_data_direction != DMA_NONE)) { in prepare_pending_reqs()
692 pending_req->sc_data_direction); in prepare_pending_reqs()
696 pending_req->cmd_len = ring_req->cmd_len; in prepare_pending_reqs()
697 if (pending_req->cmd_len > VSCSIIF_MAX_COMMAND_SIZE) { in prepare_pending_reqs()
699 pending_req->cmd_len); in prepare_pending_reqs()
702 memcpy(pending_req->cmnd, ring_req->cmnd, pending_req->cmd_len); in prepare_pending_reqs()
711 struct vscsibk_pend *pending_req; in scsiback_do_cmd_fn() local
731 pending_req = kmem_cache_alloc(scsiback_cachep, GFP_KERNEL); in scsiback_do_cmd_fn()
732 if (!pending_req) in scsiback_do_cmd_fn()
738 err = prepare_pending_reqs(info, &ring_req, pending_req); in scsiback_do_cmd_fn()
749 pending_req); in scsiback_do_cmd_fn()
750 kmem_cache_free(scsiback_cachep, pending_req); in scsiback_do_cmd_fn()
756 if (scsiback_gnttab_data_map(&ring_req, pending_req)) { in scsiback_do_cmd_fn()
757 scsiback_fast_flush_area(pending_req); in scsiback_do_cmd_fn()
759 DRIVER_ERROR << 24, 0, pending_req); in scsiback_do_cmd_fn()
760 kmem_cache_free(scsiback_cachep, pending_req); in scsiback_do_cmd_fn()
762 scsiback_cmd_exec(pending_req); in scsiback_do_cmd_fn()
766 scsiback_device_action(pending_req, TMR_ABORT_TASK, in scsiback_do_cmd_fn()
770 scsiback_device_action(pending_req, TMR_LUN_RESET, 0); in scsiback_do_cmd_fn()
775 0, pending_req); in scsiback_do_cmd_fn()
776 kmem_cache_free(scsiback_cachep, pending_req); in scsiback_do_cmd_fn()
1491 struct vscsibk_pend *pending_req = container_of(se_cmd, in scsiback_release_cmd() local
1494 kmem_cache_free(scsiback_cachep, pending_req); in scsiback_release_cmd()
1530 struct vscsibk_pend *pending_req = container_of(se_cmd, in scsiback_get_task_tag() local
1533 return pending_req->rqid; in scsiback_get_task_tag()
1543 struct vscsibk_pend *pending_req = container_of(se_cmd, in scsiback_queue_data_in() local
1546 pending_req->result = SAM_STAT_GOOD; in scsiback_queue_data_in()
1547 scsiback_cmd_done(pending_req); in scsiback_queue_data_in()
1553 struct vscsibk_pend *pending_req = container_of(se_cmd, in scsiback_queue_status() local
1559 pending_req->result = (DRIVER_SENSE << 24) | in scsiback_queue_status()
1562 pending_req->result = se_cmd->scsi_status; in scsiback_queue_status()
1564 scsiback_cmd_done(pending_req); in scsiback_queue_status()