Lines Matching refs:mp

68 	MPOOL *mp;  in mpool_open()  local
85 if ((mp = (MPOOL *)calloc(1, sizeof(MPOOL))) == NULL) in mpool_open()
87 TAILQ_INIT(&mp->lqh); in mpool_open()
89 TAILQ_INIT(&mp->hqh[entry]); in mpool_open()
90 mp->maxcache = maxcache; in mpool_open()
91 mp->npages = sb.st_size / pagesize; in mpool_open()
92 mp->pagesize = pagesize; in mpool_open()
93 mp->fd = fd; in mpool_open()
94 return (mp); in mpool_open()
102 mpool_filter(MPOOL *mp, void (*pgin) (void *, pgno_t, void *), in mpool_filter() argument
105 mp->pgin = pgin; in mpool_filter()
106 mp->pgout = pgout; in mpool_filter()
107 mp->pgcookie = pgcookie; in mpool_filter()
115 mpool_new(MPOOL *mp, pgno_t *pgnoaddr, u_int flags) in mpool_new() argument
120 if (mp->npages == MAX_PAGE_NUMBER) { in mpool_new()
125 ++mp->pagenew; in mpool_new()
132 if ((bp = mpool_bkt(mp)) == NULL) in mpool_new()
135 mp->npages++; in mpool_new()
138 bp->pgno = *pgnoaddr = mp->npages++; in mpool_new()
142 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_new()
144 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_new()
149 mpool_delete(MPOOL *mp, void *page) in mpool_delete() argument
165 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_delete()
167 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_delete()
170 mp->curcache--; in mpool_delete()
180 mpool_get(MPOOL *mp, pgno_t pgno, in mpool_get() argument
189 ++mp->pageget; in mpool_get()
193 if ((bp = mpool_look(mp, pgno)) != NULL) { in mpool_get()
205 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_get()
208 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_get()
209 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_get()
217 if ((bp = mpool_bkt(mp)) == NULL) in mpool_get()
221 off = mp->pagesize * pgno; in mpool_get()
222 if ((nr = pread(mp->fd, bp->page, mp->pagesize, off)) != (ssize_t)mp->pagesize) { in mpool_get()
227 mp->curcache--; in mpool_get()
234 memset(bp->page, 0, mp->pagesize); in mpool_get()
239 mp->curcache--; in mpool_get()
245 ++mp->pageread; in mpool_get()
258 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_get()
260 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_get()
263 if (mp->pgin != NULL) in mpool_get()
264 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page); in mpool_get()
275 mpool_put(MPOOL *mp, void *page, u_int flags) in mpool_put() argument
280 ++mp->pageput; in mpool_put()
301 mpool_close(MPOOL *mp) in mpool_close() argument
306 while (!TAILQ_EMPTY(&mp->lqh)) { in mpool_close()
307 bp = TAILQ_FIRST(&mp->lqh); in mpool_close()
308 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_close()
313 free(mp); in mpool_close()
322 mpool_sync(MPOOL *mp) in mpool_sync() argument
327 TAILQ_FOREACH(bp, &mp->lqh, q) in mpool_sync()
329 mpool_write(mp, bp) == RET_ERROR) in mpool_sync()
333 return (_fsync(mp->fd) ? RET_ERROR : RET_SUCCESS); in mpool_sync()
341 mpool_bkt(MPOOL *mp) in mpool_bkt() argument
347 if (mp->curcache < mp->maxcache) in mpool_bkt()
356 TAILQ_FOREACH(bp, &mp->lqh, q) in mpool_bkt()
360 mpool_write(mp, bp) == RET_ERROR) in mpool_bkt()
363 ++mp->pageflush; in mpool_bkt()
366 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_bkt()
368 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_bkt()
372 memset(bp, 0xff, sizeof(BKT) + mp->pagesize); in mpool_bkt()
380 new: if ((bp = (BKT *)calloc(1, sizeof(BKT) + mp->pagesize)) == NULL) in mpool_bkt()
383 ++mp->pagealloc; in mpool_bkt()
387 ++mp->curcache; in mpool_bkt()
396 mpool_write(MPOOL *mp, BKT *bp) in mpool_write() argument
401 ++mp->pagewrite; in mpool_write()
405 if (mp->pgout) in mpool_write()
406 (mp->pgout)(mp->pgcookie, bp->pgno, bp->page); in mpool_write()
408 off = mp->pagesize * bp->pgno; in mpool_write()
409 if (pwrite(mp->fd, bp->page, mp->pagesize, off) != (ssize_t)mp->pagesize) in mpool_write()
418 if (mp->pgin) in mpool_write()
419 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page); in mpool_write()
430 mpool_look(MPOOL *mp, pgno_t pgno) in mpool_look() argument
435 head = &mp->hqh[HASHKEY(pgno)]; in mpool_look()
440 ++mp->cachehit; in mpool_look()
445 ++mp->cachemiss; in mpool_look()
456 mpool_stat(MPOOL *mp) in mpool_stat() argument
462 (void)fprintf(stderr, "%lu pages in the file\n", mp->npages); in mpool_stat()
465 mp->pagesize, mp->curcache, mp->maxcache); in mpool_stat()
467 mp->pageput, mp->pageget, mp->pagenew); in mpool_stat()
469 mp->pagealloc, mp->pageflush); in mpool_stat()
470 if (mp->cachehit + mp->cachemiss) in mpool_stat()
473 ((double)mp->cachehit / (mp->cachehit + mp->cachemiss)) in mpool_stat()
474 * 100, mp->cachehit, mp->cachemiss); in mpool_stat()
476 mp->pageread, mp->pagewrite); in mpool_stat()
480 TAILQ_FOREACH(bp, &mp->lqh, q) { in mpool_stat()