Lines Matching refs:mp

62 	MPOOL *mp;  in mpool_open()  local
79 if ((mp = (MPOOL *)calloc(1, sizeof(MPOOL))) == NULL) in mpool_open()
81 TAILQ_INIT(&mp->lqh); in mpool_open()
83 TAILQ_INIT(&mp->hqh[entry]); in mpool_open()
84 mp->maxcache = maxcache; in mpool_open()
85 mp->npages = sb.st_size / pagesize; in mpool_open()
86 mp->pagesize = pagesize; in mpool_open()
87 mp->fd = fd; in mpool_open()
88 return (mp); in mpool_open()
96 mpool_filter(MPOOL *mp, void (*pgin) (void *, pgno_t, void *), in mpool_filter() argument
99 mp->pgin = pgin; in mpool_filter()
100 mp->pgout = pgout; in mpool_filter()
101 mp->pgcookie = pgcookie; in mpool_filter()
109 mpool_new(MPOOL *mp, pgno_t *pgnoaddr, u_int flags) in mpool_new() argument
114 if (mp->npages == MAX_PAGE_NUMBER) { in mpool_new()
119 ++mp->pagenew; in mpool_new()
126 if ((bp = mpool_bkt(mp)) == NULL) in mpool_new()
129 mp->npages++; in mpool_new()
132 bp->pgno = *pgnoaddr = mp->npages++; in mpool_new()
136 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_new()
138 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_new()
143 mpool_delete(MPOOL *mp, void *page) in mpool_delete() argument
159 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_delete()
161 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_delete()
164 mp->curcache--; in mpool_delete()
174 mpool_get(MPOOL *mp, pgno_t pgno, in mpool_get() argument
183 ++mp->pageget; in mpool_get()
187 if ((bp = mpool_look(mp, pgno)) != NULL) { in mpool_get()
199 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_get()
202 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_get()
203 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_get()
211 if ((bp = mpool_bkt(mp)) == NULL) in mpool_get()
215 off = mp->pagesize * pgno; in mpool_get()
216 if ((nr = pread(mp->fd, bp->page, mp->pagesize, off)) != (ssize_t)mp->pagesize) { in mpool_get()
225 mp->curcache--; in mpool_get()
232 memset(bp->page, 0, mp->pagesize); in mpool_get()
237 mp->curcache--; in mpool_get()
243 ++mp->pageread; in mpool_get()
256 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_get()
258 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_get()
261 if (mp->pgin != NULL) in mpool_get()
262 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page); in mpool_get()
273 mpool_put(MPOOL *mp, void *page, u_int flags) in mpool_put() argument
278 ++mp->pageput; in mpool_put()
299 mpool_close(MPOOL *mp) in mpool_close() argument
304 while (!TAILQ_EMPTY(&mp->lqh)) { in mpool_close()
305 bp = TAILQ_FIRST(&mp->lqh); in mpool_close()
306 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_close()
311 free(mp); in mpool_close()
320 mpool_sync(MPOOL *mp) in mpool_sync() argument
325 TAILQ_FOREACH(bp, &mp->lqh, q) in mpool_sync()
327 mpool_write(mp, bp) == RET_ERROR) in mpool_sync()
331 return (_fsync(mp->fd) ? RET_ERROR : RET_SUCCESS); in mpool_sync()
339 mpool_bkt(MPOOL *mp) in mpool_bkt() argument
345 if (mp->curcache < mp->maxcache) in mpool_bkt()
354 TAILQ_FOREACH(bp, &mp->lqh, q) in mpool_bkt()
358 mpool_write(mp, bp) == RET_ERROR) in mpool_bkt()
361 ++mp->pageflush; in mpool_bkt()
364 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_bkt()
366 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_bkt()
370 memset(bp, 0xff, sizeof(BKT) + mp->pagesize); in mpool_bkt()
378 new: if ((bp = (BKT *)calloc(1, sizeof(BKT) + mp->pagesize)) == NULL) in mpool_bkt()
381 ++mp->pagealloc; in mpool_bkt()
385 ++mp->curcache; in mpool_bkt()
394 mpool_write(MPOOL *mp, BKT *bp) in mpool_write() argument
399 ++mp->pagewrite; in mpool_write()
403 if (mp->pgout) in mpool_write()
404 (mp->pgout)(mp->pgcookie, bp->pgno, bp->page); in mpool_write()
406 off = mp->pagesize * bp->pgno; in mpool_write()
407 if (pwrite(mp->fd, bp->page, mp->pagesize, off) != (ssize_t)mp->pagesize) in mpool_write()
416 if (mp->pgin) in mpool_write()
417 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page); in mpool_write()
428 mpool_look(MPOOL *mp, pgno_t pgno) in mpool_look() argument
433 head = &mp->hqh[HASHKEY(pgno)]; in mpool_look()
438 ++mp->cachehit; in mpool_look()
443 ++mp->cachemiss; in mpool_look()
454 mpool_stat(MPOOL *mp) in mpool_stat() argument
460 (void)fprintf(stderr, "%lu pages in the file\n", mp->npages); in mpool_stat()
463 mp->pagesize, mp->curcache, mp->maxcache); in mpool_stat()
465 mp->pageput, mp->pageget, mp->pagenew); in mpool_stat()
467 mp->pagealloc, mp->pageflush); in mpool_stat()
468 if (mp->cachehit + mp->cachemiss) in mpool_stat()
471 ((double)mp->cachehit / (mp->cachehit + mp->cachemiss)) in mpool_stat()
472 * 100, mp->cachehit, mp->cachemiss); in mpool_stat()
474 mp->pageread, mp->pagewrite); in mpool_stat()
478 TAILQ_FOREACH(bp, &mp->lqh, q) { in mpool_stat()