From: Jeffrey Altman Date: Thu, 9 Nov 2006 21:26:51 +0000 (+0000) Subject: DEVEL15-windows-buf-flush-20061109 X-Git-Tag: openafs-devel-1_5_11~17 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=6ceaf350c8921cd8191d764579f580d124ba5d88;p=packages%2Fo%2Fopenafs.git DEVEL15-windows-buf-flush-20061109 FIXES 44330 The return value of buf_CleanAsync is not an error value but a flag indicating whether or not the buffer was in fact dirty. Do not treat it as an error. The error state is stored in the buffer itself. (cherry picked from commit 398ceb0775a0663829ce4c44a8ec08d9e63bd1ca) --- diff --git a/src/WINNT/afsd/cm_buf.c b/src/WINNT/afsd/cm_buf.c index ca1d7e08a..1fd19bf35 100644 --- a/src/WINNT/afsd/cm_buf.c +++ b/src/WINNT/afsd/cm_buf.c @@ -1470,14 +1470,14 @@ long buf_FlushCleanPages(cm_scache_t *scp, cm_user_t *userp, cm_req_t *reqp) long buf_CleanVnode(struct cm_scache *scp, cm_user_t *userp, cm_req_t *reqp) { - long code; + long code = 0; + long wasDirty = 0; cm_buf_t *bp; /* buffer we're hacking on */ cm_buf_t *nbp; /* next one */ long i; i = BUF_FILEHASH(&scp->fid); - code = 0; lock_ObtainWrite(&buf_globalLock); bp = cm_data.buf_fileHashTablepp[i]; if (bp) @@ -1494,12 +1494,11 @@ long buf_CleanVnode(struct cm_scache *scp, cm_user_t *userp, cm_req_t *reqp) bp->userp = userp; lock_ReleaseMutex(&bp->mx); } - code = buf_CleanAsync(bp, reqp); + wasDirty = buf_CleanAsync(bp, reqp); buf_CleanWait(scp, bp); lock_ObtainMutex(&bp->mx); if (bp->flags & CM_BUF_ERROR) { - if (code == 0 || code == -1) - code = bp->error; + code = bp->error; if (code == 0) code = -1; }