Lines Matching defs:bp

116 	BKT *bp;
130 if ((bp = mpool_bkt(mp)) == NULL)
134 bp->pgno = *pgnoaddr;
136 bp->pgno = *pgnoaddr = mp->npages++;
138 bp->flags = MPOOL_PINNED | MPOOL_INUSE;
140 head = &mp->hqh[HASHKEY(bp->pgno)];
141 TAILQ_INSERT_HEAD(head, bp, hq);
142 TAILQ_INSERT_TAIL(&mp->lqh, bp, q);
143 return (bp->page);
150 BKT *bp;
152 bp = (BKT *)((char *)page - sizeof(BKT));
155 if (!(bp->flags & MPOOL_PINNED)) {
157 "mpool_delete: page %d not pinned\n", bp->pgno);
163 head = &mp->hqh[HASHKEY(bp->pgno)];
164 TAILQ_REMOVE(head, bp, hq);
165 TAILQ_REMOVE(&mp->lqh, bp, q);
167 free(bp);
182 BKT *bp;
191 if ((bp = mpool_look(mp, pgno)) != NULL) {
193 if (!(flags & MPOOL_IGNOREPIN) && bp->flags & MPOOL_PINNED) {
195 "mpool_get: page %d already pinned\n", bp->pgno);
203 head = &mp->hqh[HASHKEY(bp->pgno)];
204 TAILQ_REMOVE(head, bp, hq);
205 TAILQ_INSERT_HEAD(head, bp, hq);
206 TAILQ_REMOVE(&mp->lqh, bp, q);
207 TAILQ_INSERT_TAIL(&mp->lqh, bp, q);
210 bp->flags |= MPOOL_PINNED;
211 return (bp->page);
215 if ((bp = mpool_bkt(mp)) == NULL)
220 if ((nr = pread(mp->fd, bp->page, mp->pagesize, off)) != (ssize_t)mp->pagesize) {
224 free(bp);
232 memset(bp->page, 0, mp->pagesize);
236 free(bp);
247 bp->pgno = pgno;
249 bp->flags = MPOOL_PINNED;
250 bp->flags |= MPOOL_INUSE;
256 head = &mp->hqh[HASHKEY(bp->pgno)];
257 TAILQ_INSERT_HEAD(head, bp, hq);
258 TAILQ_INSERT_TAIL(&mp->lqh, bp, q);
262 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page);
264 return (bp->page);
275 BKT *bp;
280 bp = (BKT *)((char *)page - sizeof(BKT));
282 if (!(bp->flags & MPOOL_PINNED)) {
284 "mpool_put: page %d not pinned\n", bp->pgno);
288 bp->flags &= ~MPOOL_PINNED;
290 bp->flags |= flags & MPOOL_DIRTY;
301 BKT *bp;
305 bp = TAILQ_FIRST(&mp->lqh);
306 TAILQ_REMOVE(&mp->lqh, bp, q);
307 free(bp);
322 BKT *bp;
325 TAILQ_FOREACH(bp, &mp->lqh, q)
326 if (bp->flags & MPOOL_DIRTY &&
327 mpool_write(mp, bp) == RET_ERROR)
342 BKT *bp;
354 TAILQ_FOREACH(bp, &mp->lqh, q)
355 if (!(bp->flags & MPOOL_PINNED)) {
357 if (bp->flags & MPOOL_DIRTY &&
358 mpool_write(mp, bp) == RET_ERROR)
364 head = &mp->hqh[HASHKEY(bp->pgno)];
365 TAILQ_REMOVE(head, bp, hq);
366 TAILQ_REMOVE(&mp->lqh, bp, q);
369 spage = bp->page;
370 memset(bp, 0xff, sizeof(BKT) + mp->pagesize);
371 bp->page = spage;
374 bp->flags = 0;
375 return (bp);
378 new: if ((bp = (BKT *)calloc(1, sizeof(BKT) + mp->pagesize)) == NULL)
383 bp->page = (char *)bp + sizeof(BKT);
384 bp->flags = 0;
386 return (bp);
394 mpool_write(MPOOL *mp, BKT *bp)
404 (mp->pgout)(mp->pgcookie, bp->pgno, bp->page);
406 off = mp->pagesize * bp->pgno;
407 if (pwrite(mp->fd, bp->page, mp->pagesize, off) != (ssize_t)mp->pagesize)
417 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page);
419 bp->flags &= ~MPOOL_DIRTY;
431 BKT *bp;
434 TAILQ_FOREACH(bp, head, hq)
435 if ((bp->pgno == pgno) &&
436 ((bp->flags & MPOOL_INUSE) == MPOOL_INUSE)) {
440 return (bp);
456 BKT *bp;
478 TAILQ_FOREACH(bp, &mp->lqh, q) {
479 (void)fprintf(stderr, "%s%d", sep, bp->pgno);
480 if (bp->flags & MPOOL_DIRTY)
482 if (bp->flags & MPOOL_PINNED)