diff --git a/source/libs/tkv/inc/tDiskMgr.h b/source/libs/tkv/inc/tDiskMgr.h index 43f5bca582..ff6e0b6ab7 100644 --- a/source/libs/tkv/inc/tDiskMgr.h +++ b/source/libs/tkv/inc/tDiskMgr.h @@ -24,8 +24,8 @@ extern "C" { typedef struct SDiskMgr SDiskMgr; -int tdmReadPage(int32_t pgid, char *pData); -int tdmWritePage(int32_t pgid, const char *pData); +int tdmReadPage(SDiskMgr *pDiskMgr, int32_t pgid, void *pData); +int tdmWritePage(SDiskMgr *pDiskMgr, int32_t pgid, const void *pData); int32_t tdmAllocPage(SDiskMgr *pDiskMgr); #ifdef __cplusplus diff --git a/source/libs/tkv/src/tDiskMgr.c b/source/libs/tkv/src/tDiskMgr.c index 916eaf66d6..dfdfd1f96b 100644 --- a/source/libs/tkv/src/tDiskMgr.c +++ b/source/libs/tkv/src/tDiskMgr.c @@ -18,11 +18,22 @@ struct SDiskMgr { const char *fname; uint16_t pgsize; - int fd; + FileFd fd; + int32_t npgid; }; -int tdmReadPage(int32_t pgid, char *pData) {} +#define PAGE_OFFSET(PGID, PGSIZE) ((PGID) * (PGSIZE)) -int tdmWritePage(int32_t pgid, const char *pData) {} +int tdmReadPage(SDiskMgr *pDiskMgr, int32_t pgid, void *pData) { + taosLSeekFile(pDiskMgr->fd, PAGE_OFFSET(pgid, pDiskMgr->pgsize), SEEK_SET); + taosReadFile(pDiskMgr->fd, pData, pDiskMgr->pgsize); + return 0; +} -int32_t tdmAllocPage(SDiskMgr *pDiskMgr) {} \ No newline at end of file +int tdmWritePage(SDiskMgr *pDiskMgr, int32_t pgid, const void *pData) { + taosLSeekFile(pDiskMgr->fd, PAGE_OFFSET(pgid, pDiskMgr->pgsize), SEEK_SET); + taosWriteFile(pDiskMgr->fd, pData, pDiskMgr->pgsize); + return 0; +} + +int32_t tdmAllocPage(SDiskMgr *pDiskMgr) { return pDiskMgr->npgid++; } \ No newline at end of file