Lines Matching refs:tfcp_req
286 struct fcloop_fcpreq *tfcp_req; member
529 struct fcloop_fcpreq *tfcp_req = in fcloop_tfcp_req_free() local
532 kfree(tfcp_req); in fcloop_tfcp_req_free()
536 fcloop_tfcp_req_put(struct fcloop_fcpreq *tfcp_req) in fcloop_tfcp_req_put() argument
538 kref_put(&tfcp_req->ref, fcloop_tfcp_req_free); in fcloop_tfcp_req_put()
542 fcloop_tfcp_req_get(struct fcloop_fcpreq *tfcp_req) in fcloop_tfcp_req_get() argument
544 return kref_get_unless_zero(&tfcp_req->ref); in fcloop_tfcp_req_get()
549 struct fcloop_fcpreq *tfcp_req, int status) in fcloop_call_host_done() argument
556 inireq->tfcp_req = NULL; in fcloop_call_host_done()
564 fcloop_tfcp_req_put(tfcp_req); in fcloop_call_host_done()
570 struct fcloop_fcpreq *tfcp_req = in fcloop_fcp_recv_work() local
572 struct nvmefc_fcp_req *fcpreq = tfcp_req->fcpreq; in fcloop_fcp_recv_work()
576 spin_lock_irq(&tfcp_req->reqlock); in fcloop_fcp_recv_work()
577 switch (tfcp_req->inistate) { in fcloop_fcp_recv_work()
579 tfcp_req->inistate = INI_IO_ACTIVE; in fcloop_fcp_recv_work()
585 spin_unlock_irq(&tfcp_req->reqlock); in fcloop_fcp_recv_work()
589 spin_unlock_irq(&tfcp_req->reqlock); in fcloop_fcp_recv_work()
594 ret = nvmet_fc_rcv_fcp_req(tfcp_req->tport->targetport, in fcloop_fcp_recv_work()
595 &tfcp_req->tgt_fcp_req, in fcloop_fcp_recv_work()
598 fcloop_call_host_done(fcpreq, tfcp_req, ret); in fcloop_fcp_recv_work()
606 struct fcloop_fcpreq *tfcp_req = in fcloop_fcp_abort_recv_work() local
611 spin_lock_irq(&tfcp_req->reqlock); in fcloop_fcp_abort_recv_work()
612 fcpreq = tfcp_req->fcpreq; in fcloop_fcp_abort_recv_work()
613 switch (tfcp_req->inistate) { in fcloop_fcp_abort_recv_work()
620 spin_unlock_irq(&tfcp_req->reqlock); in fcloop_fcp_abort_recv_work()
624 spin_unlock_irq(&tfcp_req->reqlock); in fcloop_fcp_abort_recv_work()
628 fcloop_tfcp_req_put(tfcp_req); in fcloop_fcp_abort_recv_work()
632 if (tfcp_req->tport->targetport) in fcloop_fcp_abort_recv_work()
633 nvmet_fc_rcv_fcp_abort(tfcp_req->tport->targetport, in fcloop_fcp_abort_recv_work()
634 &tfcp_req->tgt_fcp_req); in fcloop_fcp_abort_recv_work()
636 spin_lock_irq(&tfcp_req->reqlock); in fcloop_fcp_abort_recv_work()
637 tfcp_req->fcpreq = NULL; in fcloop_fcp_abort_recv_work()
638 spin_unlock_irq(&tfcp_req->reqlock); in fcloop_fcp_abort_recv_work()
640 fcloop_call_host_done(fcpreq, tfcp_req, -ECANCELED); in fcloop_fcp_abort_recv_work()
651 struct fcloop_fcpreq *tfcp_req = in fcloop_tgt_fcprqst_done_work() local
655 spin_lock_irq(&tfcp_req->reqlock); in fcloop_tgt_fcprqst_done_work()
656 fcpreq = tfcp_req->fcpreq; in fcloop_tgt_fcprqst_done_work()
657 tfcp_req->inistate = INI_IO_COMPLETED; in fcloop_tgt_fcprqst_done_work()
658 spin_unlock_irq(&tfcp_req->reqlock); in fcloop_tgt_fcprqst_done_work()
660 fcloop_call_host_done(fcpreq, tfcp_req, tfcp_req->status); in fcloop_tgt_fcprqst_done_work()
672 struct fcloop_fcpreq *tfcp_req; in fcloop_fcp_req() local
677 tfcp_req = kzalloc(sizeof(*tfcp_req), GFP_ATOMIC); in fcloop_fcp_req()
678 if (!tfcp_req) in fcloop_fcp_req()
682 inireq->tfcp_req = tfcp_req; in fcloop_fcp_req()
685 tfcp_req->fcpreq = fcpreq; in fcloop_fcp_req()
686 tfcp_req->tport = rport->targetport->private; in fcloop_fcp_req()
687 tfcp_req->inistate = INI_IO_START; in fcloop_fcp_req()
688 spin_lock_init(&tfcp_req->reqlock); in fcloop_fcp_req()
689 INIT_WORK(&tfcp_req->fcp_rcv_work, fcloop_fcp_recv_work); in fcloop_fcp_req()
690 INIT_WORK(&tfcp_req->abort_rcv_work, fcloop_fcp_abort_recv_work); in fcloop_fcp_req()
691 INIT_WORK(&tfcp_req->tio_done_work, fcloop_tgt_fcprqst_done_work); in fcloop_fcp_req()
692 kref_init(&tfcp_req->ref); in fcloop_fcp_req()
694 schedule_work(&tfcp_req->fcp_rcv_work); in fcloop_fcp_req()
757 struct fcloop_fcpreq *tfcp_req = tgt_fcp_req_to_fcpreq(tgt_fcpreq); in fcloop_fcp_op() local
763 spin_lock_irq(&tfcp_req->reqlock); in fcloop_fcp_op()
764 fcpreq = tfcp_req->fcpreq; in fcloop_fcp_op()
765 active = tfcp_req->active; in fcloop_fcp_op()
766 aborted = tfcp_req->aborted; in fcloop_fcp_op()
767 tfcp_req->active = true; in fcloop_fcp_op()
768 spin_unlock_irq(&tfcp_req->reqlock); in fcloop_fcp_op()
776 spin_lock_irq(&tfcp_req->reqlock); in fcloop_fcp_op()
777 tfcp_req->active = false; in fcloop_fcp_op()
778 spin_unlock_irq(&tfcp_req->reqlock); in fcloop_fcp_op()
827 tfcp_req->status = 0; in fcloop_fcp_op()
835 spin_lock_irq(&tfcp_req->reqlock); in fcloop_fcp_op()
836 tfcp_req->active = false; in fcloop_fcp_op()
837 spin_unlock_irq(&tfcp_req->reqlock); in fcloop_fcp_op()
850 struct fcloop_fcpreq *tfcp_req = tgt_fcp_req_to_fcpreq(tgt_fcpreq); in fcloop_tgt_fcp_abort() local
857 spin_lock_irq(&tfcp_req->reqlock); in fcloop_tgt_fcp_abort()
858 tfcp_req->aborted = true; in fcloop_tgt_fcp_abort()
859 spin_unlock_irq(&tfcp_req->reqlock); in fcloop_tgt_fcp_abort()
861 tfcp_req->status = NVME_SC_INTERNAL; in fcloop_tgt_fcp_abort()
874 struct fcloop_fcpreq *tfcp_req = tgt_fcp_req_to_fcpreq(tgt_fcpreq); in fcloop_fcp_req_release() local
876 schedule_work(&tfcp_req->tio_done_work); in fcloop_fcp_req_release()
899 struct fcloop_fcpreq *tfcp_req; in fcloop_fcp_abort() local
903 tfcp_req = inireq->tfcp_req; in fcloop_fcp_abort()
904 if (tfcp_req) in fcloop_fcp_abort()
905 fcloop_tfcp_req_get(tfcp_req); in fcloop_fcp_abort()
908 if (!tfcp_req) in fcloop_fcp_abort()
913 spin_lock_irq(&tfcp_req->reqlock); in fcloop_fcp_abort()
914 switch (tfcp_req->inistate) { in fcloop_fcp_abort()
917 tfcp_req->inistate = INI_IO_ABORTED; in fcloop_fcp_abort()
923 spin_unlock_irq(&tfcp_req->reqlock); in fcloop_fcp_abort()
927 spin_unlock_irq(&tfcp_req->reqlock); in fcloop_fcp_abort()
931 WARN_ON(!schedule_work(&tfcp_req->abort_rcv_work)); in fcloop_fcp_abort()
937 fcloop_tfcp_req_put(tfcp_req); in fcloop_fcp_abort()