more TDB
This commit is contained in:
parent
a0d7e2a155
commit
7ef98d1af9
|
@ -19,6 +19,7 @@ static int tdbGnrtFileID(const char *fname, uint8_t *fileid);
|
||||||
static void tdbMPoolRegFile(TDB_MPOOL *mp, TDB_MPFILE *mpf);
|
static void tdbMPoolRegFile(TDB_MPOOL *mp, TDB_MPFILE *mpf);
|
||||||
static void tdbMPoolUnregFile(TDB_MPOOL *mp, TDB_MPFILE *mpf);
|
static void tdbMPoolUnregFile(TDB_MPOOL *mp, TDB_MPFILE *mpf);
|
||||||
static TDB_MPFILE *tdbMPoolGetFile(TDB_MPOOL *mp, uint8_t *fileid);
|
static TDB_MPFILE *tdbMPoolGetFile(TDB_MPOOL *mp, uint8_t *fileid);
|
||||||
|
static int tdbMPoolFileReadPage(TDB_MPFILE *mpf, pgno_t pgno, void *p);
|
||||||
|
|
||||||
int tdbMPoolOpen(TDB_MPOOL **mpp, uint64_t cachesize, pgsize_t pgsize) {
|
int tdbMPoolOpen(TDB_MPOOL **mpp, uint64_t cachesize, pgsize_t pgsize) {
|
||||||
TDB_MPOOL *mp = NULL;
|
TDB_MPOOL *mp = NULL;
|
||||||
|
@ -196,6 +197,14 @@ int tdbMPoolFileGet(TDB_MPFILE *mpf, pgno_t pgno, void *addr) {
|
||||||
|
|
||||||
// load page from the disk if a container page is available
|
// load page from the disk if a container page is available
|
||||||
// TODO: load the page from the disk
|
// TODO: load the page from the disk
|
||||||
|
if (tdbMPoolFileReadPage(mpf, pgno, pagep->data) < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(pagep->pgid.fileid, mpf->fileid, TDB_FILE_ID_LEN);
|
||||||
|
pagep->pgid.pgno = pgno;
|
||||||
|
pagep->dirty = 0;
|
||||||
|
pagep->pinRef = 1;
|
||||||
|
|
||||||
// add current page to page table
|
// add current page to page table
|
||||||
TD_DLIST_APPEND_WITH_FIELD(pglist, pagep, hash);
|
TD_DLIST_APPEND_WITH_FIELD(pglist, pagep, hash);
|
||||||
|
@ -292,4 +301,21 @@ static void tdbMPoolUnregFile(TDB_MPOOL *mp, TDB_MPFILE *mpf) {
|
||||||
taosWUnLockLatch(&(bktp->latch));
|
taosWUnLockLatch(&(bktp->latch));
|
||||||
|
|
||||||
ASSERT(tmpf == mpf);
|
ASSERT(tmpf == mpf);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int tdbMPoolFileReadPage(TDB_MPFILE *mpf, pgno_t pgno, void *p) {
|
||||||
|
pgsize_t pgsize;
|
||||||
|
TDB_MPOOL *mp;
|
||||||
|
off_t offset;
|
||||||
|
size_t rsize;
|
||||||
|
|
||||||
|
mp = mpf->mp;
|
||||||
|
pgsize = mp->pgsize;
|
||||||
|
offset = pgno * pgsize;
|
||||||
|
|
||||||
|
// TODO: use loop to read all data
|
||||||
|
rsize = pread(mpf->fd, p, pgsize, offset);
|
||||||
|
// TODO: error handle
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
Loading…
Reference in New Issue