Lines Matching refs:tfcp_req

269 	struct fcloop_fcpreq		*tfcp_req;  member
365 struct fcloop_fcpreq *tfcp_req = in fcloop_tfcp_req_free() local
368 kfree(tfcp_req); in fcloop_tfcp_req_free()
372 fcloop_tfcp_req_put(struct fcloop_fcpreq *tfcp_req) in fcloop_tfcp_req_put() argument
374 kref_put(&tfcp_req->ref, fcloop_tfcp_req_free); in fcloop_tfcp_req_put()
378 fcloop_tfcp_req_get(struct fcloop_fcpreq *tfcp_req) in fcloop_tfcp_req_get() argument
380 return kref_get_unless_zero(&tfcp_req->ref); in fcloop_tfcp_req_get()
385 struct fcloop_fcpreq *tfcp_req, int status) in fcloop_call_host_done() argument
392 inireq->tfcp_req = NULL; in fcloop_call_host_done()
400 fcloop_tfcp_req_put(tfcp_req); in fcloop_call_host_done()
406 struct fcloop_fcpreq *tfcp_req = in fcloop_fcp_recv_work() local
408 struct nvmefc_fcp_req *fcpreq = tfcp_req->fcpreq; in fcloop_fcp_recv_work()
412 spin_lock(&tfcp_req->reqlock); in fcloop_fcp_recv_work()
413 switch (tfcp_req->inistate) { in fcloop_fcp_recv_work()
415 tfcp_req->inistate = INI_IO_ACTIVE; in fcloop_fcp_recv_work()
421 spin_unlock(&tfcp_req->reqlock); in fcloop_fcp_recv_work()
425 spin_unlock(&tfcp_req->reqlock); in fcloop_fcp_recv_work()
430 ret = nvmet_fc_rcv_fcp_req(tfcp_req->tport->targetport, in fcloop_fcp_recv_work()
431 &tfcp_req->tgt_fcp_req, in fcloop_fcp_recv_work()
434 fcloop_call_host_done(fcpreq, tfcp_req, ret); in fcloop_fcp_recv_work()
442 struct fcloop_fcpreq *tfcp_req = in fcloop_fcp_abort_recv_work() local
447 spin_lock(&tfcp_req->reqlock); in fcloop_fcp_abort_recv_work()
448 fcpreq = tfcp_req->fcpreq; in fcloop_fcp_abort_recv_work()
449 switch (tfcp_req->inistate) { in fcloop_fcp_abort_recv_work()
456 spin_unlock(&tfcp_req->reqlock); in fcloop_fcp_abort_recv_work()
460 spin_unlock(&tfcp_req->reqlock); in fcloop_fcp_abort_recv_work()
464 fcloop_tfcp_req_put(tfcp_req); in fcloop_fcp_abort_recv_work()
468 if (tfcp_req->tport->targetport) in fcloop_fcp_abort_recv_work()
469 nvmet_fc_rcv_fcp_abort(tfcp_req->tport->targetport, in fcloop_fcp_abort_recv_work()
470 &tfcp_req->tgt_fcp_req); in fcloop_fcp_abort_recv_work()
472 spin_lock(&tfcp_req->reqlock); in fcloop_fcp_abort_recv_work()
473 tfcp_req->fcpreq = NULL; in fcloop_fcp_abort_recv_work()
474 spin_unlock(&tfcp_req->reqlock); in fcloop_fcp_abort_recv_work()
476 fcloop_call_host_done(fcpreq, tfcp_req, -ECANCELED); in fcloop_fcp_abort_recv_work()
487 struct fcloop_fcpreq *tfcp_req = in fcloop_tgt_fcprqst_done_work() local
491 spin_lock(&tfcp_req->reqlock); in fcloop_tgt_fcprqst_done_work()
492 fcpreq = tfcp_req->fcpreq; in fcloop_tgt_fcprqst_done_work()
493 tfcp_req->inistate = INI_IO_COMPLETED; in fcloop_tgt_fcprqst_done_work()
494 spin_unlock(&tfcp_req->reqlock); in fcloop_tgt_fcprqst_done_work()
496 fcloop_call_host_done(fcpreq, tfcp_req, tfcp_req->status); in fcloop_tgt_fcprqst_done_work()
508 struct fcloop_fcpreq *tfcp_req; in fcloop_fcp_req() local
513 tfcp_req = kzalloc(sizeof(*tfcp_req), GFP_KERNEL); in fcloop_fcp_req()
514 if (!tfcp_req) in fcloop_fcp_req()
518 inireq->tfcp_req = tfcp_req; in fcloop_fcp_req()
521 tfcp_req->fcpreq = fcpreq; in fcloop_fcp_req()
522 tfcp_req->tport = rport->targetport->private; in fcloop_fcp_req()
523 tfcp_req->inistate = INI_IO_START; in fcloop_fcp_req()
524 spin_lock_init(&tfcp_req->reqlock); in fcloop_fcp_req()
525 INIT_WORK(&tfcp_req->fcp_rcv_work, fcloop_fcp_recv_work); in fcloop_fcp_req()
526 INIT_WORK(&tfcp_req->abort_rcv_work, fcloop_fcp_abort_recv_work); in fcloop_fcp_req()
527 INIT_WORK(&tfcp_req->tio_done_work, fcloop_tgt_fcprqst_done_work); in fcloop_fcp_req()
528 kref_init(&tfcp_req->ref); in fcloop_fcp_req()
530 schedule_work(&tfcp_req->fcp_rcv_work); in fcloop_fcp_req()
593 struct fcloop_fcpreq *tfcp_req = tgt_fcp_req_to_fcpreq(tgt_fcpreq); in fcloop_fcp_op() local
599 spin_lock(&tfcp_req->reqlock); in fcloop_fcp_op()
600 fcpreq = tfcp_req->fcpreq; in fcloop_fcp_op()
601 active = tfcp_req->active; in fcloop_fcp_op()
602 aborted = tfcp_req->aborted; in fcloop_fcp_op()
603 tfcp_req->active = true; in fcloop_fcp_op()
604 spin_unlock(&tfcp_req->reqlock); in fcloop_fcp_op()
612 spin_lock(&tfcp_req->reqlock); in fcloop_fcp_op()
613 tfcp_req->active = false; in fcloop_fcp_op()
614 spin_unlock(&tfcp_req->reqlock); in fcloop_fcp_op()
662 tfcp_req->status = 0; in fcloop_fcp_op()
670 spin_lock(&tfcp_req->reqlock); in fcloop_fcp_op()
671 tfcp_req->active = false; in fcloop_fcp_op()
672 spin_unlock(&tfcp_req->reqlock); in fcloop_fcp_op()
685 struct fcloop_fcpreq *tfcp_req = tgt_fcp_req_to_fcpreq(tgt_fcpreq); in fcloop_tgt_fcp_abort() local
692 spin_lock(&tfcp_req->reqlock); in fcloop_tgt_fcp_abort()
693 tfcp_req->aborted = true; in fcloop_tgt_fcp_abort()
694 spin_unlock(&tfcp_req->reqlock); in fcloop_tgt_fcp_abort()
696 tfcp_req->status = NVME_SC_INTERNAL; in fcloop_tgt_fcp_abort()
709 struct fcloop_fcpreq *tfcp_req = tgt_fcp_req_to_fcpreq(tgt_fcpreq); in fcloop_fcp_req_release() local
711 schedule_work(&tfcp_req->tio_done_work); in fcloop_fcp_req_release()
728 struct fcloop_fcpreq *tfcp_req; in fcloop_fcp_abort() local
732 tfcp_req = inireq->tfcp_req; in fcloop_fcp_abort()
733 if (tfcp_req) in fcloop_fcp_abort()
734 fcloop_tfcp_req_get(tfcp_req); in fcloop_fcp_abort()
737 if (!tfcp_req) in fcloop_fcp_abort()
742 spin_lock(&tfcp_req->reqlock); in fcloop_fcp_abort()
743 switch (tfcp_req->inistate) { in fcloop_fcp_abort()
746 tfcp_req->inistate = INI_IO_ABORTED; in fcloop_fcp_abort()
752 spin_unlock(&tfcp_req->reqlock); in fcloop_fcp_abort()
756 spin_unlock(&tfcp_req->reqlock); in fcloop_fcp_abort()
760 WARN_ON(!schedule_work(&tfcp_req->abort_rcv_work)); in fcloop_fcp_abort()
766 fcloop_tfcp_req_put(tfcp_req); in fcloop_fcp_abort()