From: Asanka Herath Date: Fri, 12 Sep 2008 05:08:00 +0000 (+0000) Subject: windows-dir-new-pages-20080911 X-Git-Tag: openafs-devel-1_5_61~826 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=7ae4174d95a9d90e16f0ddc66648741a119339d2;p=packages%2Fo%2Fopenafs.git 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. --- 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);