diff --git a/source/dnode/vnode/impl/src/vnodeBufferPool.c b/source/dnode/vnode/impl/src/vnodeBufferPool.c index 6a6c97a717..7738b81bb2 100644 --- a/source/dnode/vnode/impl/src/vnodeBufferPool.c +++ b/source/dnode/vnode/impl/src/vnodeBufferPool.c @@ -78,13 +78,24 @@ void vnodeCloseBufPool(SVnode *pVnode) { } void *vnodeMalloc(SVnode *pVnode, uint64_t size) { - // TODO - return NULL; + SVBufPool *pBufPool = pVnode->pBufPool; + + if (pBufPool->inuse == NULL) { + while (true) { + // TODO: add sem_wait and sem_post + pBufPool->inuse = tlistPopHead(&(pBufPool->free)); + if (pBufPool->inuse) { + break; + } + } + } + + return vmaMalloc(pBufPool->inuse, size); } bool vnodeBufPoolIsFull(SVnode *pVnode) { - // TODO - return false; + if (pVnode->pBufPool->inuse == NULL) return false; + return vmaIsFull(pVnode->pBufPool->inuse); } #if 0