View | Details | Raw Unified | Return to bug 15222
Collapse All | Expand All

(-)nfs_srvcache.c (+17 lines)
Lines 293-298 Link Here
293
				goto loop;
293
				goto loop;
294
			}
294
			}
295
			rp->rc_flag |= RC_LOCKED;
295
			rp->rc_flag |= RC_LOCKED;
296
			if (rp->rc_state == RC_DONE) {
297
				/*
298
				 * This can happen if the cache is too small;
299
				 * retransmits of the same request aren't
300
				 * dropped so we see the operation completing
301
				 * more than once.
302
				 * XXX maybe increase desirednfsrvcache here.
303
				 */
304
				if (rp->rc_flag & RC_REPMBUF) {
305
					m_freem(rp->rc_reply);
306
					rp->rc_flag &= ~RC_REPMBUF;
307
				}
308
			}
296
			rp->rc_state = RC_DONE;
309
			rp->rc_state = RC_DONE;
297
			/*
310
			/*
298
			 * If we have a valid reply update status and save
311
			 * If we have a valid reply update status and save
Lines 332-337 Link Here
332
		nextrp = rp->rc_lru.tqe_next;
345
		nextrp = rp->rc_lru.tqe_next;
333
		LIST_REMOVE(rp, rc_hash);
346
		LIST_REMOVE(rp, rc_hash);
334
		TAILQ_REMOVE(&nfsrvlruhead, rp, rc_lru);
347
		TAILQ_REMOVE(&nfsrvlruhead, rp, rc_lru);
348
		if (rp->rc_flag & RC_REPMBUF)
349
			m_freem(rp->rc_reply);
350
		if (rp->rc_flag & RC_NAM)
351
			free(rp->rc_nam, M_SONAME);
335
		free(rp, M_NFSD);
352
		free(rp, M_NFSD);
336
	}
353
	}
337
	numnfsrvcache = 0;
354
	numnfsrvcache = 0;

Return to bug 15222