Lines Matching refs:bp
108 BKT *bp; in mpool_new() local
122 if ((bp = mpool_bkt(mp)) == NULL) in mpool_new()
126 bp->pgno = *pgnoaddr; in mpool_new()
128 bp->pgno = *pgnoaddr = mp->npages++; in mpool_new()
130 bp->flags = MPOOL_PINNED | MPOOL_INUSE; in mpool_new()
132 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_new()
133 TAILQ_INSERT_HEAD(head, bp, hq); in mpool_new()
134 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_new()
135 return (bp->page); in mpool_new()
142 BKT *bp; in mpool_delete() local
144 bp = (BKT *)((char *)page - sizeof(BKT)); in mpool_delete()
147 if (!(bp->flags & MPOOL_PINNED)) { in mpool_delete()
149 "mpool_delete: page %d not pinned\n", bp->pgno); in mpool_delete()
155 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_delete()
156 TAILQ_REMOVE(head, bp, hq); in mpool_delete()
157 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_delete()
159 free(bp); in mpool_delete()
173 BKT *bp; in mpool_get() local
182 if ((bp = mpool_look(mp, pgno)) != NULL) { in mpool_get()
184 if (!(flags & MPOOL_IGNOREPIN) && bp->flags & MPOOL_PINNED) { in mpool_get()
186 "mpool_get: page %d already pinned\n", bp->pgno); in mpool_get()
194 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_get()
195 TAILQ_REMOVE(head, bp, hq); in mpool_get()
196 TAILQ_INSERT_HEAD(head, bp, hq); in mpool_get()
197 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_get()
198 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_get()
201 bp->flags |= MPOOL_PINNED; in mpool_get()
202 return (bp->page); in mpool_get()
206 if ((bp = mpool_bkt(mp)) == NULL) in mpool_get()
211 if ((nr = pread(mp->fd, bp->page, mp->pagesize, off)) != mp->pagesize) { in mpool_get()
215 free(bp); in mpool_get()
223 memset(bp->page, 0, mp->pagesize); in mpool_get()
227 free(bp); in mpool_get()
238 bp->pgno = pgno; in mpool_get()
240 bp->flags = MPOOL_PINNED; in mpool_get()
241 bp->flags |= MPOOL_INUSE; in mpool_get()
247 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_get()
248 TAILQ_INSERT_HEAD(head, bp, hq); in mpool_get()
249 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_get()
253 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page); in mpool_get()
255 return (bp->page); in mpool_get()
265 BKT *bp; in mpool_put() local
270 bp = (BKT *)((char *)page - sizeof(BKT)); in mpool_put()
272 if (!(bp->flags & MPOOL_PINNED)) { in mpool_put()
274 "mpool_put: page %d not pinned\n", bp->pgno); in mpool_put()
278 bp->flags &= ~MPOOL_PINNED; in mpool_put()
280 bp->flags |= flags & MPOOL_DIRTY; in mpool_put()
291 BKT *bp; in mpool_close() local
294 while ((bp = TAILQ_FIRST(&mp->lqh))) { in mpool_close()
295 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_close()
296 free(bp); in mpool_close()
311 BKT *bp; in mpool_sync() local
314 TAILQ_FOREACH(bp, &mp->lqh, q) in mpool_sync()
315 if (bp->flags & MPOOL_DIRTY && in mpool_sync()
316 mpool_write(mp, bp) == RET_ERROR) in mpool_sync()
331 BKT *bp; in mpool_bkt() local
343 TAILQ_FOREACH(bp, &mp->lqh, q) in mpool_bkt()
344 if (!(bp->flags & MPOOL_PINNED)) { in mpool_bkt()
346 if (bp->flags & MPOOL_DIRTY && in mpool_bkt()
347 mpool_write(mp, bp) == RET_ERROR) in mpool_bkt()
353 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_bkt()
354 TAILQ_REMOVE(head, bp, hq); in mpool_bkt()
355 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_bkt()
358 spage = bp->page; in mpool_bkt()
359 memset(bp, 0xff, sizeof(BKT) + mp->pagesize); in mpool_bkt()
360 bp->page = spage; in mpool_bkt()
363 bp->flags = 0; in mpool_bkt()
364 return (bp); in mpool_bkt()
367 new: if ((bp = (BKT *)malloc(sizeof(BKT) + mp->pagesize)) == NULL) in mpool_bkt()
372 memset(bp, 0xff, sizeof(BKT) + mp->pagesize); in mpool_bkt()
373 bp->page = (char *)bp + sizeof(BKT); in mpool_bkt()
374 bp->flags = 0; in mpool_bkt()
376 return (bp); in mpool_bkt()
384 mpool_write(MPOOL *mp, BKT *bp) in mpool_write() argument
394 (mp->pgout)(mp->pgcookie, bp->pgno, bp->page); in mpool_write()
396 off = mp->pagesize * bp->pgno; in mpool_write()
397 if (pwrite(mp->fd, bp->page, mp->pagesize, off) != mp->pagesize) in mpool_write()
407 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page); in mpool_write()
409 bp->flags &= ~MPOOL_DIRTY; in mpool_write()
421 BKT *bp; in mpool_look() local
424 TAILQ_FOREACH(bp, head, hq) in mpool_look()
425 if ((bp->pgno == pgno) && in mpool_look()
426 ((bp->flags & MPOOL_INUSE) == MPOOL_INUSE)) { in mpool_look()
430 return (bp); in mpool_look()
446 BKT *bp; in mpool_stat() local
468 TAILQ_FOREACH(bp, &mp->lqh, q) { in mpool_stat()
469 (void)fprintf(stderr, "%s%d", sep, bp->pgno); in mpool_stat()
470 if (bp->flags & MPOOL_DIRTY) in mpool_stat()
472 if (bp->flags & MPOOL_PINNED) in mpool_stat()