Lines Matching refs:dr

1772 	struct dupreq *dr = NULL;  in __svc_dup()  local
1794 if ((dr = __svc_dupcache_victim(dc, timenow)) == NULL) in __svc_dup()
1797 if ((rc = __svc_dupcache_enter(req, dr, dc, drxid, drhash, timenow)) in __svc_dup()
1818 struct dupreq *dr = NULL; in __svc_dupcache_check() local
1821 dr = dc->dc_hashtbl[drhash]; in __svc_dupcache_check()
1822 while (dr != NULL) { in __svc_dupcache_check()
1823 if (dr->dr_xid == drxid && in __svc_dupcache_check()
1824 dr->dr_proc == req->rq_proc && in __svc_dupcache_check()
1825 dr->dr_prog == req->rq_prog && in __svc_dupcache_check()
1826 dr->dr_vers == req->rq_vers && in __svc_dupcache_check()
1827 dr->dr_addr.len == req->rq_xprt->xp_rtaddr.len && in __svc_dupcache_check()
1828 memcmp(dr->dr_addr.buf, req->rq_xprt->xp_rtaddr.buf, in __svc_dupcache_check()
1829 dr->dr_addr.len) == 0) { /* entry found */ in __svc_dupcache_check()
1830 if (dr->dr_hash != drhash) { in __svc_dupcache_check()
1846 if (((dr->dr_status == DUP_DONE) || in __svc_dupcache_check()
1847 (dr->dr_status == DUP_DROP)) && in __svc_dupcache_check()
1849 dr->dr_resp.buf != NULL) { in __svc_dupcache_check()
1850 *resp_buf = malloc(dr->dr_resp.len); in __svc_dupcache_check()
1857 (void) memset(*resp_buf, 0, dr->dr_resp.len); in __svc_dupcache_check()
1858 (void) memcpy(*resp_buf, dr->dr_resp.buf, in __svc_dupcache_check()
1859 dr->dr_resp.len); in __svc_dupcache_check()
1860 *resp_bufsz = dr->dr_resp.len; in __svc_dupcache_check()
1869 return (dr->dr_status); in __svc_dupcache_check()
1871 dr = dr->dr_chain; in __svc_dupcache_check()
1884 struct dupreq *dr = NULL; in __svc_dupcache_victim() local
1897 while ((dc->dc_mru) && (dr = dc->dc_mru->dr_next) && in __svc_dupcache_victim()
1898 ((timenow - dr->dr_time) > dc->dc_time)) { in __svc_dupcache_victim()
1900 if (dr->dr_status != DUP_DONE && in __svc_dupcache_victim()
1901 dr->dr_status != DUP_DROP) { in __svc_dupcache_victim()
1922 if (dr->dr_resp.buf) { in __svc_dupcache_victim()
1923 free(dr->dr_resp.buf); in __svc_dupcache_victim()
1924 dr->dr_resp.buf = NULL; in __svc_dupcache_victim()
1926 if (dr->dr_addr.buf) { in __svc_dupcache_victim()
1927 free(dr->dr_addr.buf); in __svc_dupcache_victim()
1928 dr->dr_addr.buf = NULL; in __svc_dupcache_victim()
1932 if (dr->dr_chain) in __svc_dupcache_victim()
1933 dr->dr_chain->dr_prevchain = dr->dr_prevchain; in __svc_dupcache_victim()
1934 if (dr->dr_prevchain) in __svc_dupcache_victim()
1935 dr->dr_prevchain->dr_chain = dr->dr_chain; in __svc_dupcache_victim()
1936 if (dc->dc_hashtbl[dr->dr_hash] == dr) in __svc_dupcache_victim()
1937 dc->dc_hashtbl[dr->dr_hash] = dr->dr_chain; in __svc_dupcache_victim()
1940 if (dc->dc_mru == dr) { in __svc_dupcache_victim()
1943 dc->dc_mru->dr_next = dr->dr_next; in __svc_dupcache_victim()
1944 dr->dr_next->dr_prev = dc->dc_mru; in __svc_dupcache_victim()
1946 free(dr); in __svc_dupcache_victim()
1947 dr = NULL; in __svc_dupcache_victim()
1954 if ((dr = malloc(sizeof (*dr))) == NULL) { in __svc_dupcache_victim()
1959 (void) memset(dr, 0, sizeof (*dr)); in __svc_dupcache_victim()
1960 return (dr); in __svc_dupcache_victim()
1974 __svc_dupcache_enter(struct svc_req *req, struct dupreq *dr, in __svc_dupcache_enter() argument
1977 dr->dr_xid = drxid; in __svc_dupcache_enter()
1978 dr->dr_prog = req->rq_prog; in __svc_dupcache_enter()
1979 dr->dr_vers = req->rq_vers; in __svc_dupcache_enter()
1980 dr->dr_proc = req->rq_proc; in __svc_dupcache_enter()
1981 dr->dr_addr.maxlen = req->rq_xprt->xp_rtaddr.len; in __svc_dupcache_enter()
1982 dr->dr_addr.len = dr->dr_addr.maxlen; in __svc_dupcache_enter()
1983 if ((dr->dr_addr.buf = malloc(dr->dr_addr.maxlen)) == NULL) { in __svc_dupcache_enter()
1985 free(dr); in __svc_dupcache_enter()
1988 (void) memset(dr->dr_addr.buf, 0, dr->dr_addr.len); in __svc_dupcache_enter()
1989 (void) memcpy(dr->dr_addr.buf, req->rq_xprt->xp_rtaddr.buf, in __svc_dupcache_enter()
1990 dr->dr_addr.len); in __svc_dupcache_enter()
1991 dr->dr_resp.buf = NULL; in __svc_dupcache_enter()
1992 dr->dr_resp.maxlen = 0; in __svc_dupcache_enter()
1993 dr->dr_resp.len = 0; in __svc_dupcache_enter()
1994 dr->dr_status = DUP_INPROGRESS; in __svc_dupcache_enter()
1995 dr->dr_time = timenow; in __svc_dupcache_enter()
1996 dr->dr_hash = drhash; /* needed for efficient victim cleanup */ in __svc_dupcache_enter()
2000 dr->dr_chain = dc->dc_hashtbl[drhash]; in __svc_dupcache_enter()
2001 dr->dr_prevchain = NULL; in __svc_dupcache_enter()
2003 dc->dc_hashtbl[drhash]->dr_prevchain = dr; in __svc_dupcache_enter()
2004 dc->dc_hashtbl[drhash] = dr; in __svc_dupcache_enter()
2066 struct dupreq *dr = NULL; in __svc_dupcache_update() local
2070 dr = dc->dc_hashtbl[drhash]; in __svc_dupcache_update()
2071 while (dr != NULL) { in __svc_dupcache_update()
2072 if (dr->dr_xid == drxid && in __svc_dupcache_update()
2073 dr->dr_proc == req->rq_proc && in __svc_dupcache_update()
2074 dr->dr_prog == req->rq_prog && in __svc_dupcache_update()
2075 dr->dr_vers == req->rq_vers && in __svc_dupcache_update()
2076 dr->dr_addr.len == req->rq_xprt->xp_rtaddr.len && in __svc_dupcache_update()
2077 memcmp(dr->dr_addr.buf, req->rq_xprt->xp_rtaddr.buf, in __svc_dupcache_update()
2078 dr->dr_addr.len) == 0) { /* entry found */ in __svc_dupcache_update()
2079 if (dr->dr_hash != drhash) { in __svc_dupcache_update()
2089 if ((dr->dr_resp.buf = in __svc_dupcache_update()
2096 (void) memset(dr->dr_resp.buf, 0, resp_bufsz); in __svc_dupcache_update()
2097 (void) memcpy(dr->dr_resp.buf, resp_buf, in __svc_dupcache_update()
2099 dr->dr_resp.len = resp_bufsz; in __svc_dupcache_update()
2103 dr->dr_status = status; in __svc_dupcache_update()
2104 dr->dr_time = timenow; in __svc_dupcache_update()
2108 dr->dr_next = dr; in __svc_dupcache_update()
2109 dr->dr_prev = dr; in __svc_dupcache_update()
2111 dr->dr_next = dc->dc_mru->dr_next; in __svc_dupcache_update()
2112 dc->dc_mru->dr_next->dr_prev = dr; in __svc_dupcache_update()
2113 dr->dr_prev = dc->dc_mru; in __svc_dupcache_update()
2114 dc->dc_mru->dr_next = dr; in __svc_dupcache_update()
2116 dc->dc_mru = dr; in __svc_dupcache_update()
2121 dr = dr->dr_chain; in __svc_dupcache_update()
2139 struct dupreq *dr = NULL; in __svc_dupcache_debug() local
2146 dr = dc->dc_hashtbl[i]; in __svc_dupcache_debug()
2147 while (dr != NULL) { in __svc_dupcache_debug()
2153 dr->dr_xid, dr->dr_status, dr->dr_time); in __svc_dupcache_debug()
2155 dr, dr->dr_chain, dr->dr_prevchain); in __svc_dupcache_debug()
2156 dr = dr->dr_chain; in __svc_dupcache_debug()
2162 dr = dc->dc_mru->dr_next; /* lru */ in __svc_dupcache_debug()
2163 while (dr != dc->dc_mru) { in __svc_dupcache_debug()
2165 dr->dr_xid, dr->dr_status, dr->dr_time); in __svc_dupcache_debug()
2167 dr, dr->dr_next, dr->dr_prev); in __svc_dupcache_debug()
2168 dr = dr->dr_next; in __svc_dupcache_debug()
2171 dr->dr_xid, dr->dr_status, dr->dr_time); in __svc_dupcache_debug()
2173 dr, dr->dr_next, dr->dr_prev); in __svc_dupcache_debug()