diff --git a/src/system/detail/src/vnodeFile.c b/src/system/detail/src/vnodeFile.c index ecdb70de74cf0aa46eaebb528a3e24a76a81ff4a..c0dac7ddaa5fdf8b6b2520ce1163dd6ebea6ef4a 100644 --- a/src/system/detail/src/vnodeFile.c +++ b/src/system/detail/src/vnodeFile.c @@ -1817,7 +1817,15 @@ int vnodeInitFile(int vnode) { pVnode->fmagic = (uint64_t *)calloc(pVnode->maxFiles + 1, sizeof(uint64_t)); int fileId = pVnode->fileId; - for (int i = 0; i < pVnode->numOfFiles; ++i) { + /* + * The actual files will far exceed the files that need to exist + */ + if (pVnode->numOfFiles > pVnode->maxFiles) { + dError("vid:%d numOfFiles:%d should not larger than maxFiles:%d", vnode, pVnode->numOfFiles, pVnode->maxFiles); + } + + int numOfFiles = MIN(pVnode->numOfFiles, pVnode->maxFiles); + for (int i = 0; i < numOfFiles; ++i) { if (vnodeUpdateFileMagic(vnode, fileId) < 0) { if (pVnode->cfg.replications > 1) { pVnode->badFileId = fileId;