|
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; |