From: Asanka Herath Date: Fri, 12 Sep 2008 05:09:44 +0000 (+0000) Subject: DEVEL15-windows-dir-new-pages-20080911 X-Git-Tag: openafs-devel-1_5_53~37 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=91eeff62e75327d5e2f12c152d1455581a61d778;p=packages%2Fo%2Fopenafs.git DEVEL15-windows-dir-new-pages-20080911 LICENSE MIT A small patch to permit the directory package to allocate additional directory pages when adding new entries that do not fit in the pages that were obtained from the file server. (cherry picked from commit 7ae4174d95a9d90e16f0ddc66648741a119339d2) --- diff --git a/src/WINNT/afsd/cm_dir.c b/src/WINNT/afsd/cm_dir.c index 6a1db665b..d6f34395d 100644 --- a/src/WINNT/afsd/cm_dir.c +++ b/src/WINNT/afsd/cm_dir.c @@ -1270,16 +1270,22 @@ cm_DirOpAddBuffer(cm_dirOp_t * op, cm_buf_t * bufferp) (op->lockType == CM_DIRLOCK_WRITE ? CM_SCACHESYNC_WRITE : CM_SCACHESYNC_READ) | CM_SCACHESYNC_BUFLOCKED); - if (code == 0 && bufferp->dataVersion != op->dataVersion) { - osi_Log2(afsd_logp, "cm_DirOpAddBuffer: buffer data version mismatch. buf dv = %d. needs %d", - bufferp->dataVersion, op->dataVersion); - - cm_SyncOpDone(op->scp, bufferp, - CM_SCACHESYNC_NEEDCALLBACK | - (op->lockType == CM_DIRLOCK_WRITE ? CM_SCACHESYNC_WRITE : CM_SCACHESYNC_READ) | - CM_SCACHESYNC_BUFLOCKED); - - code = CM_ERROR_INVAL; + if (code == 0) { + if (bufferp->dataVersion == CM_BUF_VERSION_BAD) { + /* This is a new buffer */ + bufferp->dataVersion = op->dataVersion; + } else if (bufferp->dataVersion != op->dataVersion) { + osi_Log2(afsd_logp, + "cm_DirOpAddBuffer: buffer data version mismatch. buf dv = %d. needs %d", + bufferp->dataVersion, op->dataVersion); + + cm_SyncOpDone(op->scp, bufferp, + CM_SCACHESYNC_NEEDCALLBACK | + (op->lockType == CM_DIRLOCK_WRITE ? CM_SCACHESYNC_WRITE : CM_SCACHESYNC_READ) | + CM_SCACHESYNC_BUFLOCKED); + + code = CM_ERROR_INVAL; + } } lock_ReleaseWrite(&op->scp->rw);