windows-buf-invalidate-on-vnovnode-20080507

LICENSE MIT

Once we know that an attempt to stablize a buffer has failed due to
VNOVNODE, stop trying to Stablize future buffers and just invalidate
all of them belonging to the same FID.
This commit is contained in:
Jeffrey Altman 2008-05-08 06:25:42 +00:00
parent c847fb4964
commit ef619db804

View File

@ -1552,10 +1552,16 @@ long buf_FlushCleanPages(cm_scache_t *scp, cm_user_t *userp, cm_req_t *reqp)
buf_WaitIO(scp, bp); buf_WaitIO(scp, bp);
lock_ReleaseMutex(&bp->mx); lock_ReleaseMutex(&bp->mx);
code = (*cm_buf_opsp->Stabilizep)(scp, userp, reqp); /*
if (code && code != CM_ERROR_BADFD) * if the error for the previous buffer was BADFD
goto skip; * then all buffers for the FID are bad. Do not
* attempt to stabalize.
*/
if (code != CM_ERROR_BADFD) {
code = (*cm_buf_opsp->Stabilizep)(scp, userp, reqp);
if (code && code != CM_ERROR_BADFD)
goto skip;
}
if (code == CM_ERROR_BADFD) { if (code == CM_ERROR_BADFD) {
/* if the scp's FID is bad its because we received VNOVNODE /* if the scp's FID is bad its because we received VNOVNODE
* when attempting to FetchStatus before the write. This * when attempting to FetchStatus before the write. This