Lines Matching refs:dr
1775 struct dupreq *dr = NULL; in __svc_dup() local
1797 if ((dr = __svc_dupcache_victim(dc, timenow)) == NULL) in __svc_dup()
1800 if ((rc = __svc_dupcache_enter(req, dr, dc, drxid, drhash, timenow)) in __svc_dup()
1821 struct dupreq *dr = NULL; in __svc_dupcache_check() local
1824 dr = dc->dc_hashtbl[drhash]; in __svc_dupcache_check()
1825 while (dr != NULL) { in __svc_dupcache_check()
1826 if (dr->dr_xid == drxid && in __svc_dupcache_check()
1827 dr->dr_proc == req->rq_proc && in __svc_dupcache_check()
1828 dr->dr_prog == req->rq_prog && in __svc_dupcache_check()
1829 dr->dr_vers == req->rq_vers && in __svc_dupcache_check()
1830 dr->dr_addr.len == req->rq_xprt->xp_rtaddr.len && in __svc_dupcache_check()
1831 memcmp(dr->dr_addr.buf, req->rq_xprt->xp_rtaddr.buf, in __svc_dupcache_check()
1832 dr->dr_addr.len) == 0) { /* entry found */ in __svc_dupcache_check()
1833 if (dr->dr_hash != drhash) { in __svc_dupcache_check()
1849 if (((dr->dr_status == DUP_DONE) || in __svc_dupcache_check()
1850 (dr->dr_status == DUP_DROP)) && in __svc_dupcache_check()
1852 dr->dr_resp.buf != NULL) { in __svc_dupcache_check()
1853 *resp_buf = malloc(dr->dr_resp.len); in __svc_dupcache_check()
1860 (void) memset(*resp_buf, 0, dr->dr_resp.len); in __svc_dupcache_check()
1861 (void) memcpy(*resp_buf, dr->dr_resp.buf, in __svc_dupcache_check()
1862 dr->dr_resp.len); in __svc_dupcache_check()
1863 *resp_bufsz = dr->dr_resp.len; in __svc_dupcache_check()
1872 return (dr->dr_status); in __svc_dupcache_check()
1874 dr = dr->dr_chain; in __svc_dupcache_check()
1887 struct dupreq *dr = NULL; in __svc_dupcache_victim() local
1900 while ((dc->dc_mru) && (dr = dc->dc_mru->dr_next) && in __svc_dupcache_victim()
1901 ((timenow - dr->dr_time) > dc->dc_time)) { in __svc_dupcache_victim()
1903 if (dr->dr_status != DUP_DONE && in __svc_dupcache_victim()
1904 dr->dr_status != DUP_DROP) { in __svc_dupcache_victim()
1925 if (dr->dr_resp.buf) { in __svc_dupcache_victim()
1926 free(dr->dr_resp.buf); in __svc_dupcache_victim()
1927 dr->dr_resp.buf = NULL; in __svc_dupcache_victim()
1929 if (dr->dr_addr.buf) { in __svc_dupcache_victim()
1930 free(dr->dr_addr.buf); in __svc_dupcache_victim()
1931 dr->dr_addr.buf = NULL; in __svc_dupcache_victim()
1935 if (dr->dr_chain) in __svc_dupcache_victim()
1936 dr->dr_chain->dr_prevchain = dr->dr_prevchain; in __svc_dupcache_victim()
1937 if (dr->dr_prevchain) in __svc_dupcache_victim()
1938 dr->dr_prevchain->dr_chain = dr->dr_chain; in __svc_dupcache_victim()
1939 if (dc->dc_hashtbl[dr->dr_hash] == dr) in __svc_dupcache_victim()
1940 dc->dc_hashtbl[dr->dr_hash] = dr->dr_chain; in __svc_dupcache_victim()
1943 if (dc->dc_mru == dr) { in __svc_dupcache_victim()
1946 dc->dc_mru->dr_next = dr->dr_next; in __svc_dupcache_victim()
1947 dr->dr_next->dr_prev = dc->dc_mru; in __svc_dupcache_victim()
1949 free(dr); in __svc_dupcache_victim()
1950 dr = NULL; in __svc_dupcache_victim()
1957 if ((dr = malloc(sizeof (*dr))) == NULL) { in __svc_dupcache_victim()
1962 (void) memset(dr, 0, sizeof (*dr)); in __svc_dupcache_victim()
1963 return (dr); in __svc_dupcache_victim()
1977 __svc_dupcache_enter(struct svc_req *req, struct dupreq *dr, in __svc_dupcache_enter() argument
1980 dr->dr_xid = drxid; in __svc_dupcache_enter()
1981 dr->dr_prog = req->rq_prog; in __svc_dupcache_enter()
1982 dr->dr_vers = req->rq_vers; in __svc_dupcache_enter()
1983 dr->dr_proc = req->rq_proc; in __svc_dupcache_enter()
1984 dr->dr_addr.maxlen = req->rq_xprt->xp_rtaddr.len; in __svc_dupcache_enter()
1985 dr->dr_addr.len = dr->dr_addr.maxlen; in __svc_dupcache_enter()
1986 if ((dr->dr_addr.buf = malloc(dr->dr_addr.maxlen)) == NULL) { in __svc_dupcache_enter()
1988 free(dr); in __svc_dupcache_enter()
1991 (void) memset(dr->dr_addr.buf, 0, dr->dr_addr.len); in __svc_dupcache_enter()
1992 (void) memcpy(dr->dr_addr.buf, req->rq_xprt->xp_rtaddr.buf, in __svc_dupcache_enter()
1993 dr->dr_addr.len); in __svc_dupcache_enter()
1994 dr->dr_resp.buf = NULL; in __svc_dupcache_enter()
1995 dr->dr_resp.maxlen = 0; in __svc_dupcache_enter()
1996 dr->dr_resp.len = 0; in __svc_dupcache_enter()
1997 dr->dr_status = DUP_INPROGRESS; in __svc_dupcache_enter()
1998 dr->dr_time = timenow; in __svc_dupcache_enter()
1999 dr->dr_hash = drhash; /* needed for efficient victim cleanup */ in __svc_dupcache_enter()
2003 dr->dr_chain = dc->dc_hashtbl[drhash]; in __svc_dupcache_enter()
2004 dr->dr_prevchain = NULL; in __svc_dupcache_enter()
2006 dc->dc_hashtbl[drhash]->dr_prevchain = dr; in __svc_dupcache_enter()
2007 dc->dc_hashtbl[drhash] = dr; in __svc_dupcache_enter()
2069 struct dupreq *dr = NULL; in __svc_dupcache_update() local
2073 dr = dc->dc_hashtbl[drhash]; in __svc_dupcache_update()
2074 while (dr != NULL) { in __svc_dupcache_update()
2075 if (dr->dr_xid == drxid && in __svc_dupcache_update()
2076 dr->dr_proc == req->rq_proc && in __svc_dupcache_update()
2077 dr->dr_prog == req->rq_prog && in __svc_dupcache_update()
2078 dr->dr_vers == req->rq_vers && in __svc_dupcache_update()
2079 dr->dr_addr.len == req->rq_xprt->xp_rtaddr.len && in __svc_dupcache_update()
2080 memcmp(dr->dr_addr.buf, req->rq_xprt->xp_rtaddr.buf, in __svc_dupcache_update()
2081 dr->dr_addr.len) == 0) { /* entry found */ in __svc_dupcache_update()
2082 if (dr->dr_hash != drhash) { in __svc_dupcache_update()
2092 if ((dr->dr_resp.buf = in __svc_dupcache_update()
2099 (void) memset(dr->dr_resp.buf, 0, resp_bufsz); in __svc_dupcache_update()
2100 (void) memcpy(dr->dr_resp.buf, resp_buf, in __svc_dupcache_update()
2102 dr->dr_resp.len = resp_bufsz; in __svc_dupcache_update()
2106 dr->dr_status = status; in __svc_dupcache_update()
2107 dr->dr_time = timenow; in __svc_dupcache_update()
2111 dr->dr_next = dr; in __svc_dupcache_update()
2112 dr->dr_prev = dr; in __svc_dupcache_update()
2114 dr->dr_next = dc->dc_mru->dr_next; in __svc_dupcache_update()
2115 dc->dc_mru->dr_next->dr_prev = dr; in __svc_dupcache_update()
2116 dr->dr_prev = dc->dc_mru; in __svc_dupcache_update()
2117 dc->dc_mru->dr_next = dr; in __svc_dupcache_update()
2119 dc->dc_mru = dr; in __svc_dupcache_update()
2124 dr = dr->dr_chain; in __svc_dupcache_update()
2142 struct dupreq *dr = NULL; in __svc_dupcache_debug() local
2149 dr = dc->dc_hashtbl[i]; in __svc_dupcache_debug()
2150 while (dr != NULL) { in __svc_dupcache_debug()
2156 dr->dr_xid, dr->dr_status, dr->dr_time); in __svc_dupcache_debug()
2158 dr, dr->dr_chain, dr->dr_prevchain); in __svc_dupcache_debug()
2159 dr = dr->dr_chain; in __svc_dupcache_debug()
2165 dr = dc->dc_mru->dr_next; /* lru */ in __svc_dupcache_debug()
2166 while (dr != dc->dc_mru) { in __svc_dupcache_debug()
2168 dr->dr_xid, dr->dr_status, dr->dr_time); in __svc_dupcache_debug()
2170 dr, dr->dr_next, dr->dr_prev); in __svc_dupcache_debug()
2171 dr = dr->dr_next; in __svc_dupcache_debug()
2174 dr->dr_xid, dr->dr_status, dr->dr_time); in __svc_dupcache_debug()
2176 dr, dr->dr_next, dr->dr_prev); in __svc_dupcache_debug()