Lines Matching defs:drc

65 	rfs4_drc_t *drc;
71 drc = kmem_alloc(sizeof (rfs4_drc_t), KM_SLEEP);
73 drc->max_size = drc_size;
74 drc->in_use = 0;
76 mutex_init(&drc->lock, NULL, MUTEX_DEFAULT, NULL);
78 drc->dr_hash = drc_hash_size;
80 drc->dr_buckets = kmem_alloc(sizeof (list_t)*drc_hash_size, KM_SLEEP);
83 list_create(&drc->dr_buckets[bki], sizeof (rfs4_dupreq_t),
87 list_create(&(drc->dr_cache), sizeof (rfs4_dupreq_t),
90 return (drc);
97 rfs4_fini_drc(rfs4_drc_t *drc)
101 ASSERT(drc);
104 for (drp = list_head(&(drc->dr_cache)); drp != NULL; drp = drp_next) {
112 drp_next = list_next(&(drc->dr_cache), drp);
117 mutex_destroy(&drc->lock);
118 kmem_free(drc->dr_buckets,
119 sizeof (list_t)*drc->dr_hash);
120 kmem_free(drc, sizeof (rfs4_drc_t));
134 rfs4_drc_t *drc;
137 ASSERT(drp->drc);
139 ASSERT(MUTEX_HELD(&drp->drc->lock));
146 drc = drp->drc;
153 list_remove(&(drc->dr_cache), drp);
166 rfs4_alloc_dr(rfs4_drc_t *drc)
170 ASSERT(drc);
171 ASSERT(MUTEX_HELD(&drc->lock));
176 if (drc->in_use < drc->max_size) {
181 drp->drc = drc;
182 drc->in_use++;
191 for (drp_tail = list_tail(&drc->dr_cache); drp_tail != NULL;
192 drp_tail = list_prev(&drc->dr_cache, drp_tail)) {
197 list_remove(&(drc->dr_cache), drp_tail);
212 DTRACE_PROBE1(nfss__i__drc_full, rfs4_drc_t *, drc);
226 rfs4_find_dr(struct svc_req *req, rfs4_drc_t *drc, rfs4_dupreq_t **dup)
239 bktdex = the_xid % drc->dr_hash;
242 &(drc->dr_buckets[(the_xid % drc->dr_hash)]);
251 mutex_enter(&drc->lock);
269 mutex_exit(&drc->lock);
280 mutex_exit(&drc->lock);
285 drp = rfs4_alloc_dr(drc);
286 mutex_exit(&drc->lock);
318 mutex_enter(&drc->lock);
319 list_insert_tail(&(drc->dr_cache), drp);
320 mutex_exit(&drc->lock);
340 * the drc lists..
342 mutex_enter(&drc->lock);
343 list_insert_head(&drc->dr_cache, drp);
345 mutex_exit(&drc->lock);
464 mutex_enter(&drp->drc->lock);
466 list_insert_tail(&(drp->drc->dr_cache), drp);
467 mutex_exit(&drp->drc->lock);
520 mutex_enter(&drp->drc->lock);
522 mutex_exit(&drp->drc->lock);