Lines Matching refs:bp

115 	BKT *bp;  in mpool_new()  local
129 if ((bp = mpool_bkt(mp)) == NULL) in mpool_new()
133 bp->pgno = *pgnoaddr; in mpool_new()
135 bp->pgno = *pgnoaddr = mp->npages++; in mpool_new()
137 bp->flags = MPOOL_PINNED | MPOOL_INUSE; in mpool_new()
139 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_new()
140 TAILQ_INSERT_HEAD(head, bp, hq); in mpool_new()
141 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_new()
142 return (bp->page); in mpool_new()
149 BKT *bp; in mpool_delete() local
151 bp = (BKT *)((char *)page - sizeof(BKT)); in mpool_delete()
154 if (!(bp->flags & MPOOL_PINNED)) { in mpool_delete()
156 "mpool_delete: page %d not pinned\n", bp->pgno); in mpool_delete()
162 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_delete()
163 TAILQ_REMOVE(head, bp, hq); in mpool_delete()
164 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_delete()
166 free(bp); in mpool_delete()
181 BKT *bp; in mpool_get() local
190 if ((bp = mpool_look(mp, pgno)) != NULL) { in mpool_get()
192 if (!(flags & MPOOL_IGNOREPIN) && bp->flags & MPOOL_PINNED) { in mpool_get()
194 "mpool_get: page %d already pinned\n", bp->pgno); in mpool_get()
202 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_get()
203 TAILQ_REMOVE(head, bp, hq); in mpool_get()
204 TAILQ_INSERT_HEAD(head, bp, hq); in mpool_get()
205 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_get()
206 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_get()
209 bp->flags |= MPOOL_PINNED; in mpool_get()
210 return (bp->page); in mpool_get()
214 if ((bp = mpool_bkt(mp)) == NULL) in mpool_get()
219 if ((nr = pread(mp->fd, bp->page, mp->pagesize, off)) != (ssize_t)mp->pagesize) { in mpool_get()
223 free(bp); in mpool_get()
231 memset(bp->page, 0, mp->pagesize); in mpool_get()
235 free(bp); in mpool_get()
246 bp->pgno = pgno; in mpool_get()
248 bp->flags = MPOOL_PINNED; in mpool_get()
249 bp->flags |= MPOOL_INUSE; in mpool_get()
255 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_get()
256 TAILQ_INSERT_HEAD(head, bp, hq); in mpool_get()
257 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_get()
261 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page); in mpool_get()
263 return (bp->page); in mpool_get()
274 BKT *bp; in mpool_put() local
279 bp = (BKT *)((char *)page - sizeof(BKT)); in mpool_put()
281 if (!(bp->flags & MPOOL_PINNED)) { in mpool_put()
283 "mpool_put: page %d not pinned\n", bp->pgno); in mpool_put()
287 bp->flags &= ~MPOOL_PINNED; in mpool_put()
289 bp->flags |= flags & MPOOL_DIRTY; in mpool_put()
300 BKT *bp; in mpool_close() local
304 bp = TAILQ_FIRST(&mp->lqh); in mpool_close()
305 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_close()
306 free(bp); in mpool_close()
321 BKT *bp; in mpool_sync() local
324 TAILQ_FOREACH(bp, &mp->lqh, q) in mpool_sync()
325 if (bp->flags & MPOOL_DIRTY && in mpool_sync()
326 mpool_write(mp, bp) == RET_ERROR) in mpool_sync()
341 BKT *bp; in mpool_bkt() local
353 TAILQ_FOREACH(bp, &mp->lqh, q) in mpool_bkt()
354 if (!(bp->flags & MPOOL_PINNED)) { in mpool_bkt()
356 if (bp->flags & MPOOL_DIRTY && in mpool_bkt()
357 mpool_write(mp, bp) == RET_ERROR) in mpool_bkt()
363 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_bkt()
364 TAILQ_REMOVE(head, bp, hq); in mpool_bkt()
365 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_bkt()
368 spage = bp->page; in mpool_bkt()
369 memset(bp, 0xff, sizeof(BKT) + mp->pagesize); in mpool_bkt()
370 bp->page = spage; in mpool_bkt()
373 bp->flags = 0; in mpool_bkt()
374 return (bp); in mpool_bkt()
377 new: if ((bp = (BKT *)calloc(1, sizeof(BKT) + mp->pagesize)) == NULL) in mpool_bkt()
382 bp->page = (char *)bp + sizeof(BKT); in mpool_bkt()
383 bp->flags = 0; in mpool_bkt()
385 return (bp); in mpool_bkt()
393 mpool_write(MPOOL *mp, BKT *bp) in mpool_write() argument
403 (mp->pgout)(mp->pgcookie, bp->pgno, bp->page); in mpool_write()
405 off = mp->pagesize * bp->pgno; in mpool_write()
406 if (pwrite(mp->fd, bp->page, mp->pagesize, off) != (ssize_t)mp->pagesize) in mpool_write()
416 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page); in mpool_write()
418 bp->flags &= ~MPOOL_DIRTY; in mpool_write()
430 BKT *bp; in mpool_look() local
433 TAILQ_FOREACH(bp, head, hq) in mpool_look()
434 if ((bp->pgno == pgno) && in mpool_look()
435 ((bp->flags & MPOOL_INUSE) == MPOOL_INUSE)) { in mpool_look()
439 return (bp); in mpool_look()
455 BKT *bp; in mpool_stat() local
477 TAILQ_FOREACH(bp, &mp->lqh, q) { in mpool_stat()
478 (void)fprintf(stderr, "%s%d", sep, bp->pgno); in mpool_stat()
479 if (bp->flags & MPOOL_DIRTY) in mpool_stat()
481 if (bp->flags & MPOOL_PINNED) in mpool_stat()