Lines Matching refs:bp
112 BKT *bp; in mpool_new() local
126 if ((bp = mpool_bkt(mp)) == NULL) in mpool_new()
130 bp->pgno = *pgnoaddr; in mpool_new()
132 bp->pgno = *pgnoaddr = mp->npages++; in mpool_new()
134 bp->flags = MPOOL_PINNED | MPOOL_INUSE; in mpool_new()
136 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_new()
137 TAILQ_INSERT_HEAD(head, bp, hq); in mpool_new()
138 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_new()
139 return (bp->page); in mpool_new()
146 BKT *bp; in mpool_delete() local
148 bp = (BKT *)((char *)page - sizeof(BKT)); in mpool_delete()
151 if (!(bp->flags & MPOOL_PINNED)) { in mpool_delete()
153 "mpool_delete: page %d not pinned\n", bp->pgno); in mpool_delete()
159 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_delete()
160 TAILQ_REMOVE(head, bp, hq); in mpool_delete()
161 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_delete()
163 free(bp); in mpool_delete()
178 BKT *bp; in mpool_get() local
187 if ((bp = mpool_look(mp, pgno)) != NULL) { in mpool_get()
189 if (!(flags & MPOOL_IGNOREPIN) && bp->flags & MPOOL_PINNED) { in mpool_get()
191 "mpool_get: page %d already pinned\n", bp->pgno); in mpool_get()
199 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_get()
200 TAILQ_REMOVE(head, bp, hq); in mpool_get()
201 TAILQ_INSERT_HEAD(head, bp, hq); in mpool_get()
202 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_get()
203 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_get()
206 bp->flags |= MPOOL_PINNED; in mpool_get()
207 return (bp->page); in mpool_get()
211 if ((bp = mpool_bkt(mp)) == NULL) in mpool_get()
216 if ((nr = pread(mp->fd, bp->page, mp->pagesize, off)) != (ssize_t)mp->pagesize) { in mpool_get()
220 free(bp); in mpool_get()
228 memset(bp->page, 0, mp->pagesize); in mpool_get()
232 free(bp); in mpool_get()
243 bp->pgno = pgno; in mpool_get()
245 bp->flags = MPOOL_PINNED; in mpool_get()
246 bp->flags |= MPOOL_INUSE; in mpool_get()
252 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_get()
253 TAILQ_INSERT_HEAD(head, bp, hq); in mpool_get()
254 TAILQ_INSERT_TAIL(&mp->lqh, bp, q); in mpool_get()
258 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page); in mpool_get()
260 return (bp->page); in mpool_get()
271 BKT *bp; in mpool_put() local
276 bp = (BKT *)((char *)page - sizeof(BKT)); in mpool_put()
278 if (!(bp->flags & MPOOL_PINNED)) { in mpool_put()
280 "mpool_put: page %d not pinned\n", bp->pgno); in mpool_put()
284 bp->flags &= ~MPOOL_PINNED; in mpool_put()
286 bp->flags |= flags & MPOOL_DIRTY; in mpool_put()
297 BKT *bp; in mpool_close() local
301 bp = TAILQ_FIRST(&mp->lqh); in mpool_close()
302 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_close()
303 free(bp); in mpool_close()
318 BKT *bp; in mpool_sync() local
321 TAILQ_FOREACH(bp, &mp->lqh, q) in mpool_sync()
322 if (bp->flags & MPOOL_DIRTY && in mpool_sync()
323 mpool_write(mp, bp) == RET_ERROR) in mpool_sync()
338 BKT *bp; in mpool_bkt() local
350 TAILQ_FOREACH(bp, &mp->lqh, q) in mpool_bkt()
351 if (!(bp->flags & MPOOL_PINNED)) { in mpool_bkt()
353 if (bp->flags & MPOOL_DIRTY && in mpool_bkt()
354 mpool_write(mp, bp) == RET_ERROR) in mpool_bkt()
360 head = &mp->hqh[HASHKEY(bp->pgno)]; in mpool_bkt()
361 TAILQ_REMOVE(head, bp, hq); in mpool_bkt()
362 TAILQ_REMOVE(&mp->lqh, bp, q); in mpool_bkt()
365 spage = bp->page; in mpool_bkt()
366 memset(bp, 0xff, sizeof(BKT) + mp->pagesize); in mpool_bkt()
367 bp->page = spage; in mpool_bkt()
370 bp->flags = 0; in mpool_bkt()
371 return (bp); in mpool_bkt()
374 new: if ((bp = (BKT *)calloc(1, sizeof(BKT) + mp->pagesize)) == NULL) in mpool_bkt()
379 bp->page = (char *)bp + sizeof(BKT); in mpool_bkt()
380 bp->flags = 0; in mpool_bkt()
382 return (bp); in mpool_bkt()
390 mpool_write(MPOOL *mp, BKT *bp) in mpool_write() argument
400 (mp->pgout)(mp->pgcookie, bp->pgno, bp->page); in mpool_write()
402 off = mp->pagesize * bp->pgno; in mpool_write()
403 if (pwrite(mp->fd, bp->page, mp->pagesize, off) != (ssize_t)mp->pagesize) in mpool_write()
413 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page); in mpool_write()
415 bp->flags &= ~MPOOL_DIRTY; in mpool_write()
427 BKT *bp; in mpool_look() local
430 TAILQ_FOREACH(bp, head, hq) in mpool_look()
431 if ((bp->pgno == pgno) && in mpool_look()
432 ((bp->flags & MPOOL_INUSE) == MPOOL_INUSE)) { in mpool_look()
436 return (bp); in mpool_look()
452 BKT *bp; in mpool_stat() local
474 TAILQ_FOREACH(bp, &mp->lqh, q) { in mpool_stat()
475 (void)fprintf(stderr, "%s%d", sep, bp->pgno); in mpool_stat()
476 if (bp->flags & MPOOL_DIRTY) in mpool_stat()
478 if (bp->flags & MPOOL_PINNED) in mpool_stat()