Lines Matching refs:bp

128 	BKT *bp;  in mpool_newf()  local
142 if ((bp = mpool_bkt(mp)) == NULL) in mpool_newf()
147 bp->pgno = *pgnoaddr; in mpool_newf()
149 bp->pgno = *pgnoaddr = mp->npages++; in mpool_newf()
151 bp->flags = MPOOL_PINNED | MPOOL_INUSE; in mpool_newf()
153 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_newf()
154 TAILQ_INSERT_HEAD(head, bp, hq); in mpool_newf()
155 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_newf()
156 return bp->page; in mpool_newf()
169 BKT *bp; in mpool_delete() local
171 bp = (void *)((char *)page - sizeof(BKT)); in mpool_delete()
174 if (!(bp->flags & MPOOL_PINNED)) { in mpool_delete()
176 "%s: page %d not pinned\n", __func__, bp->pgno); in mpool_delete()
182 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_delete()
183 TAILQ_REMOVE(head, bp, hq); in mpool_delete()
184 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_delete()
186 free(bp); in mpool_delete()
199 BKT *bp; in mpool_get() local
214 if ((bp = mpool_look(mp, pgno)) != NULL) { in mpool_get()
216 if (!(flags & MPOOL_IGNOREPIN) && bp->flags & MPOOL_PINNED) { in mpool_get()
218 "mpool_get: page %d already pinned\n", bp->pgno); in mpool_get()
226 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_get()
227 TAILQ_REMOVE(head, bp, hq); in mpool_get()
228 TAILQ_INSERT_HEAD(head, bp, hq); in mpool_get()
229 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_get()
230 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_get()
234 bp->flags |= MPOOL_PINNED; in mpool_get()
235 return bp->page; in mpool_get()
239 if ((bp = mpool_bkt(mp)) == NULL) in mpool_get()
254 if ((nr = pread(mp->fd, bp->page, (size_t)mp->pagesize, off)) != (int)mp->pagesize) { in mpool_get()
263 memset(bp->page, 0, mp->pagesize); in mpool_get()
269 bp->pgno = pgno; in mpool_get()
271 bp->flags = MPOOL_PINNED; in mpool_get()
272 bp->flags |= MPOOL_INUSE; in mpool_get()
278 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_get()
279 TAILQ_INSERT_HEAD(head, bp, hq); in mpool_get()
280 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_get()
284 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page); in mpool_get()
286 return bp->page; in mpool_get()
297 BKT *bp; in mpool_put() local
302 bp = (void *)((intptr_t)page - sizeof(BKT)); in mpool_put()
304 if (!(bp->flags & MPOOL_PINNED)) { in mpool_put()
306 "mpool_put: page %d not pinned\n", bp->pgno); in mpool_put()
310 bp->flags &= ~MPOOL_PINNED; in mpool_put()
312 bp->flags |= flags & MPOOL_DIRTY; in mpool_put()
323 BKT *bp; in mpool_close() local
327 bp = TAILQ_FIRST(&mp->lqh); in mpool_close()
328 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_close()
329 free(bp); in mpool_close()
344 BKT *bp; in mpool_sync() local
347 TAILQ_FOREACH(bp, &mp->lqh, q) in mpool_sync()
348 if (bp->flags & MPOOL_DIRTY && in mpool_sync()
349 mpool_write(mp, bp) == RET_ERROR) in mpool_sync()
364 BKT *bp; in mpool_bkt() local
376 TAILQ_FOREACH(bp, &mp->lqh, q) in mpool_bkt()
377 if (!(bp->flags & MPOOL_PINNED)) { in mpool_bkt()
379 if (bp->flags & MPOOL_DIRTY && in mpool_bkt()
380 mpool_write(mp, bp) == RET_ERROR) in mpool_bkt()
386 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_bkt()
387 TAILQ_REMOVE(head, bp, hq); in mpool_bkt()
388 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_bkt()
391 void *spage = bp->page; in mpool_bkt()
392 (void)memset(bp, 0xff, in mpool_bkt()
394 bp->page = spage; in mpool_bkt()
397 return bp; in mpool_bkt()
400 new: if ((bp = calloc(1, (size_t)(sizeof(BKT) + mp->pagesize))) == NULL) in mpool_bkt()
406 (void)memset(bp, 0xff, (size_t)(sizeof(BKT) + mp->pagesize)); in mpool_bkt()
408 bp->page = (void *)((intptr_t)bp + sizeof(BKT)); in mpool_bkt()
410 return bp; in mpool_bkt()
418 mpool_write(MPOOL *mp, BKT *bp) in mpool_write() argument
428 (mp->pgout)(mp->pgcookie, bp->pgno, bp->page); in mpool_write()
430 off = mp->pagesize * bp->pgno; in mpool_write()
431 if (off / mp->pagesize != bp->pgno) { in mpool_write()
438 if (pwrite(mp->fd, bp->page, (size_t)mp->pagesize, off) != in mpool_write()
449 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page); in mpool_write()
451 bp->flags &= ~MPOOL_DIRTY; in mpool_write()
463 BKT *bp; in mpool_look() local
466 TAILQ_FOREACH(bp, head, hq) in mpool_look()
467 if (bp->pgno == pgno) { in mpool_look()
471 return bp; in mpool_look()
488 BKT *bp; local
510 TAILQ_FOREACH(bp, &mp->lqh, q) {
511 (void)fprintf(stderr, "%s%d", sep, bp->pgno);
512 if (bp->flags & MPOOL_DIRTY)
514 if (bp->flags & MPOOL_PINNED)