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()
581 static int check_for_drop(struct fcloop_fcpreq *tfcp_req) in check_for_drop() argument
583 struct nvmefc_fcp_req *fcpreq = tfcp_req->fcpreq; in check_for_drop()
614 struct fcloop_fcpreq *tfcp_req = in fcloop_fcp_recv_work() local
616 struct nvmefc_fcp_req *fcpreq = tfcp_req->fcpreq; in fcloop_fcp_recv_work()
621 spin_lock_irqsave(&tfcp_req->reqlock, flags); in fcloop_fcp_recv_work()
622 switch (tfcp_req->inistate) { in fcloop_fcp_recv_work()
624 tfcp_req->inistate = INI_IO_ACTIVE; in fcloop_fcp_recv_work()
630 spin_unlock_irqrestore(&tfcp_req->reqlock, flags); in fcloop_fcp_recv_work()
634 spin_unlock_irqrestore(&tfcp_req->reqlock, flags); in fcloop_fcp_recv_work()
639 if (likely(!check_for_drop(tfcp_req))) in fcloop_fcp_recv_work()
640 ret = nvmet_fc_rcv_fcp_req(tfcp_req->tport->targetport, in fcloop_fcp_recv_work()
641 &tfcp_req->tgt_fcp_req, in fcloop_fcp_recv_work()
647 fcloop_call_host_done(fcpreq, tfcp_req, ret); in fcloop_fcp_recv_work()
653 struct fcloop_fcpreq *tfcp_req = in fcloop_fcp_abort_recv_work() local
659 spin_lock_irqsave(&tfcp_req->reqlock, flags); in fcloop_fcp_abort_recv_work()
660 fcpreq = tfcp_req->fcpreq; in fcloop_fcp_abort_recv_work()
661 switch (tfcp_req->inistate) { in fcloop_fcp_abort_recv_work()
668 spin_unlock_irqrestore(&tfcp_req->reqlock, flags); in fcloop_fcp_abort_recv_work()
672 spin_unlock_irqrestore(&tfcp_req->reqlock, flags); in fcloop_fcp_abort_recv_work()
676 fcloop_tfcp_req_put(tfcp_req); in fcloop_fcp_abort_recv_work()
680 if (tfcp_req->tport->targetport) in fcloop_fcp_abort_recv_work()
681 nvmet_fc_rcv_fcp_abort(tfcp_req->tport->targetport, in fcloop_fcp_abort_recv_work()
682 &tfcp_req->tgt_fcp_req); in fcloop_fcp_abort_recv_work()
684 spin_lock_irqsave(&tfcp_req->reqlock, flags); in fcloop_fcp_abort_recv_work()
685 tfcp_req->fcpreq = NULL; in fcloop_fcp_abort_recv_work()
686 spin_unlock_irqrestore(&tfcp_req->reqlock, flags); in fcloop_fcp_abort_recv_work()
688 fcloop_call_host_done(fcpreq, tfcp_req, -ECANCELED); in fcloop_fcp_abort_recv_work()
699 struct fcloop_fcpreq *tfcp_req = in fcloop_tgt_fcprqst_done_work() local
704 spin_lock_irqsave(&tfcp_req->reqlock, flags); in fcloop_tgt_fcprqst_done_work()
705 fcpreq = tfcp_req->fcpreq; in fcloop_tgt_fcprqst_done_work()
706 tfcp_req->inistate = INI_IO_COMPLETED; in fcloop_tgt_fcprqst_done_work()
707 spin_unlock_irqrestore(&tfcp_req->reqlock, flags); in fcloop_tgt_fcprqst_done_work()
709 fcloop_call_host_done(fcpreq, tfcp_req, tfcp_req->status); in fcloop_tgt_fcprqst_done_work()
721 struct fcloop_fcpreq *tfcp_req; in fcloop_fcp_req() local
726 tfcp_req = kzalloc(sizeof(*tfcp_req), GFP_ATOMIC); in fcloop_fcp_req()
727 if (!tfcp_req) in fcloop_fcp_req()
731 inireq->tfcp_req = tfcp_req; in fcloop_fcp_req()
734 tfcp_req->fcpreq = fcpreq; in fcloop_fcp_req()
735 tfcp_req->tport = rport->targetport->private; in fcloop_fcp_req()
736 tfcp_req->inistate = INI_IO_START; in fcloop_fcp_req()
737 spin_lock_init(&tfcp_req->reqlock); in fcloop_fcp_req()
738 INIT_WORK(&tfcp_req->fcp_rcv_work, fcloop_fcp_recv_work); in fcloop_fcp_req()
739 INIT_WORK(&tfcp_req->abort_rcv_work, fcloop_fcp_abort_recv_work); in fcloop_fcp_req()
740 INIT_WORK(&tfcp_req->tio_done_work, fcloop_tgt_fcprqst_done_work); in fcloop_fcp_req()
741 kref_init(&tfcp_req->ref); in fcloop_fcp_req()
743 queue_work(nvmet_wq, &tfcp_req->fcp_rcv_work); in fcloop_fcp_req()
806 struct fcloop_fcpreq *tfcp_req = tgt_fcp_req_to_fcpreq(tgt_fcpreq); in fcloop_fcp_op() local
813 spin_lock_irqsave(&tfcp_req->reqlock, flags); in fcloop_fcp_op()
814 fcpreq = tfcp_req->fcpreq; in fcloop_fcp_op()
815 active = tfcp_req->active; in fcloop_fcp_op()
816 aborted = tfcp_req->aborted; in fcloop_fcp_op()
817 tfcp_req->active = true; in fcloop_fcp_op()
818 spin_unlock_irqrestore(&tfcp_req->reqlock, flags); in fcloop_fcp_op()
826 spin_lock_irqsave(&tfcp_req->reqlock, flags); in fcloop_fcp_op()
827 tfcp_req->active = false; in fcloop_fcp_op()
828 spin_unlock_irqrestore(&tfcp_req->reqlock, flags); in fcloop_fcp_op()
877 tfcp_req->status = 0; in fcloop_fcp_op()
885 spin_lock_irqsave(&tfcp_req->reqlock, flags); in fcloop_fcp_op()
886 tfcp_req->active = false; in fcloop_fcp_op()
887 spin_unlock_irqrestore(&tfcp_req->reqlock, flags); in fcloop_fcp_op()
900 struct fcloop_fcpreq *tfcp_req = tgt_fcp_req_to_fcpreq(tgt_fcpreq); in fcloop_tgt_fcp_abort() local
908 spin_lock_irqsave(&tfcp_req->reqlock, flags); in fcloop_tgt_fcp_abort()
909 tfcp_req->aborted = true; in fcloop_tgt_fcp_abort()
910 spin_unlock_irqrestore(&tfcp_req->reqlock, flags); in fcloop_tgt_fcp_abort()
912 tfcp_req->status = NVME_SC_INTERNAL; in fcloop_tgt_fcp_abort()
925 struct fcloop_fcpreq *tfcp_req = tgt_fcp_req_to_fcpreq(tgt_fcpreq); in fcloop_fcp_req_release() local
927 queue_work(nvmet_wq, &tfcp_req->tio_done_work); in fcloop_fcp_req_release()
950 struct fcloop_fcpreq *tfcp_req; in fcloop_fcp_abort() local
955 tfcp_req = inireq->tfcp_req; in fcloop_fcp_abort()
956 if (tfcp_req) in fcloop_fcp_abort()
957 fcloop_tfcp_req_get(tfcp_req); in fcloop_fcp_abort()
960 if (!tfcp_req) in fcloop_fcp_abort()
965 spin_lock_irqsave(&tfcp_req->reqlock, flags); in fcloop_fcp_abort()
966 switch (tfcp_req->inistate) { in fcloop_fcp_abort()
969 tfcp_req->inistate = INI_IO_ABORTED; in fcloop_fcp_abort()
975 spin_unlock_irqrestore(&tfcp_req->reqlock, flags); in fcloop_fcp_abort()
979 spin_unlock_irqrestore(&tfcp_req->reqlock, flags); in fcloop_fcp_abort()
983 WARN_ON(!queue_work(nvmet_wq, &tfcp_req->abort_rcv_work)); in fcloop_fcp_abort()
989 fcloop_tfcp_req_put(tfcp_req); in fcloop_fcp_abort()