Lines Matching refs:dr

718 #define	DRHASH(dr)	XIDHASH((dr)->dr_xid)  argument
757 struct dupreq *dr; in svc_cots_kdup() local
768 dr = cotsdrhashtbl[XIDHASH(xid)]; in svc_cots_kdup()
769 while (dr != NULL) { in svc_cots_kdup()
770 if (dr->dr_xid == xid && in svc_cots_kdup()
771 dr->dr_proc == req->rq_proc && in svc_cots_kdup()
772 dr->dr_prog == req->rq_prog && in svc_cots_kdup()
773 dr->dr_vers == req->rq_vers && in svc_cots_kdup()
774 dr->dr_addr.len == req->rq_xprt->xp_rtaddr.len && in svc_cots_kdup()
775 bcmp((caddr_t)dr->dr_addr.buf, in svc_cots_kdup()
777 dr->dr_addr.len) == 0) { in svc_cots_kdup()
778 status = dr->dr_status; in svc_cots_kdup()
780 bcopy(dr->dr_resp.buf, res, size); in svc_cots_kdup()
782 *dupcachedp = (dr->dr_resfree != NULL); in svc_cots_kdup()
786 dr->dr_status = DUP_INPROGRESS; in svc_cots_kdup()
787 *drpp = dr; in svc_cots_kdup()
796 dr = dr->dr_chain; in svc_cots_kdup()
804 dr = kmem_alloc(sizeof (*dr), KM_NOSLEEP); in svc_cots_kdup()
805 if (dr == NULL) { in svc_cots_kdup()
809 dr->dr_resp.buf = NULL; in svc_cots_kdup()
810 dr->dr_resp.maxlen = 0; in svc_cots_kdup()
811 dr->dr_addr.buf = NULL; in svc_cots_kdup()
812 dr->dr_addr.maxlen = 0; in svc_cots_kdup()
814 dr->dr_next = cotsdrmru->dr_next; in svc_cots_kdup()
815 cotsdrmru->dr_next = dr; in svc_cots_kdup()
817 dr->dr_next = dr; in svc_cots_kdup()
821 dr = cotsdrmru->dr_next; in svc_cots_kdup()
822 while (dr->dr_status == DUP_INPROGRESS) { in svc_cots_kdup()
823 dr = dr->dr_next; in svc_cots_kdup()
824 if (dr == cotsdrmru->dr_next) { in svc_cots_kdup()
830 unhash(dr); in svc_cots_kdup()
831 if (dr->dr_resfree) { in svc_cots_kdup()
832 (*dr->dr_resfree)(dr->dr_resp.buf); in svc_cots_kdup()
835 dr->dr_resfree = NULL; in svc_cots_kdup()
836 cotsdrmru = dr; in svc_cots_kdup()
838 dr->dr_xid = REQTOXID(req); in svc_cots_kdup()
839 dr->dr_prog = req->rq_prog; in svc_cots_kdup()
840 dr->dr_vers = req->rq_vers; in svc_cots_kdup()
841 dr->dr_proc = req->rq_proc; in svc_cots_kdup()
842 if (dr->dr_addr.maxlen < req->rq_xprt->xp_rtaddr.len) { in svc_cots_kdup()
843 if (dr->dr_addr.buf != NULL) in svc_cots_kdup()
844 kmem_free(dr->dr_addr.buf, dr->dr_addr.maxlen); in svc_cots_kdup()
845 dr->dr_addr.maxlen = req->rq_xprt->xp_rtaddr.len; in svc_cots_kdup()
846 dr->dr_addr.buf = kmem_alloc(dr->dr_addr.maxlen, KM_NOSLEEP); in svc_cots_kdup()
847 if (dr->dr_addr.buf == NULL) { in svc_cots_kdup()
848 dr->dr_addr.maxlen = 0; in svc_cots_kdup()
849 dr->dr_status = DUP_DROP; in svc_cots_kdup()
854 dr->dr_addr.len = req->rq_xprt->xp_rtaddr.len; in svc_cots_kdup()
855 bcopy(req->rq_xprt->xp_rtaddr.buf, dr->dr_addr.buf, dr->dr_addr.len); in svc_cots_kdup()
856 if (dr->dr_resp.maxlen < size) { in svc_cots_kdup()
857 if (dr->dr_resp.buf != NULL) in svc_cots_kdup()
858 kmem_free(dr->dr_resp.buf, dr->dr_resp.maxlen); in svc_cots_kdup()
859 dr->dr_resp.maxlen = (unsigned int)size; in svc_cots_kdup()
860 dr->dr_resp.buf = kmem_alloc(size, KM_NOSLEEP); in svc_cots_kdup()
861 if (dr->dr_resp.buf == NULL) { in svc_cots_kdup()
862 dr->dr_resp.maxlen = 0; in svc_cots_kdup()
863 dr->dr_status = DUP_DROP; in svc_cots_kdup()
868 dr->dr_status = DUP_INPROGRESS; in svc_cots_kdup()
870 drhash = (uint32_t)DRHASH(dr); in svc_cots_kdup()
871 dr->dr_chain = cotsdrhashtbl[drhash]; in svc_cots_kdup()
872 cotsdrhashtbl[drhash] = dr; in svc_cots_kdup()
875 *drpp = dr; in svc_cots_kdup()
889 svc_cots_kdupdone(struct dupreq *dr, caddr_t res, void (*dis_resfree)(), in svc_cots_kdupdone() argument
892 ASSERT(dr->dr_resfree == NULL); in svc_cots_kdupdone()
894 bcopy(res, dr->dr_resp.buf, size); in svc_cots_kdupdone()
895 dr->dr_resfree = dis_resfree; in svc_cots_kdupdone()
897 dr->dr_status = status; in svc_cots_kdupdone()
904 unhash(struct dupreq *dr) in unhash() argument
912 drhash = (uint32_t)DRHASH(dr); in unhash()
915 if (drt == dr) { in unhash()