• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10.1/Libc-1044.1.2/db/mpool/FreeBSD/

Lines Matching refs:bp

118 	BKT *bp;
132 if ((bp = mpool_bkt(mp)) == NULL)
134 *pgnoaddr = bp->pgno = mp->npages++;
135 bp->flags = MPOOL_PINNED;
137 head = &mp->hqh[HASHKEY(bp->pgno)];
138 TAILQ_INSERT_HEAD(head, bp, hq);
139 TAILQ_INSERT_TAIL(&mp->lqh, bp, q);
140 return (bp->page);
153 BKT *bp;
168 if ((bp = mpool_look(mp, pgno)) != NULL) {
170 if (bp->flags & MPOOL_PINNED) {
172 "mpool_get: page %d already pinned\n", bp->pgno);
173 LIBC_ABORT("page %d already pinned", bp->pgno);
180 head = &mp->hqh[HASHKEY(bp->pgno)];
181 TAILQ_REMOVE(head, bp, hq);
182 TAILQ_INSERT_HEAD(head, bp, hq);
183 TAILQ_REMOVE(&mp->lqh, bp, q);
184 TAILQ_INSERT_TAIL(&mp->lqh, bp, q);
187 bp->flags |= MPOOL_PINNED;
188 return (bp->page);
192 if ((bp = mpool_bkt(mp)) == NULL)
200 nr = pread(mp->fd, bp->page, mp->pagesize, off);
208 bp->pgno = pgno;
209 bp->flags = MPOOL_PINNED;
215 head = &mp->hqh[HASHKEY(bp->pgno)];
216 TAILQ_INSERT_HEAD(head, bp, hq);
217 TAILQ_INSERT_TAIL(&mp->lqh, bp, q);
221 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page);
223 return (bp->page);
234 BKT *bp;
239 bp = (BKT *)((char *)page - sizeof(BKT));
241 if (!(bp->flags & MPOOL_PINNED)) {
243 "mpool_put: page %d not pinned\n", bp->pgno);
244 LIBC_ABORT("page %d not pinned", bp->pgno);
247 bp->flags &= ~MPOOL_PINNED;
248 bp->flags |= flags & MPOOL_DIRTY;
259 BKT *bp;
263 bp = TAILQ_FIRST(&mp->lqh);
264 TAILQ_REMOVE(&mp->lqh, bp, q);
265 free(bp);
280 BKT *bp;
283 TAILQ_FOREACH(bp, &mp->lqh, q) {
284 if (bp->flags & MPOOL_DIRTY) {
285 if (mpool_write(mp, bp) == RET_ERROR) {
290 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page);
307 BKT *bp;
319 TAILQ_FOREACH(bp, &mp->lqh, q)
320 if (!(bp->flags & MPOOL_PINNED)) {
322 if (bp->flags & MPOOL_DIRTY &&
323 mpool_write(mp, bp) == RET_ERROR)
329 head = &mp->hqh[HASHKEY(bp->pgno)];
330 TAILQ_REMOVE(head, bp, hq);
331 TAILQ_REMOVE(&mp->lqh, bp, q);
334 spage = bp->page;
335 memset(bp, 0xff, sizeof(BKT) + mp->pagesize);
336 bp->page = spage;
339 return (bp);
342 new: if ((bp = (BKT *)calloc(1, sizeof(BKT) + mp->pagesize)) == NULL)
347 bp->page = (char *)bp + sizeof(BKT);
349 return (bp);
357 mpool_write(MPOOL *mp, BKT *bp)
367 (mp->pgout)(mp->pgcookie, bp->pgno, bp->page);
369 off = mp->pagesize * bp->pgno;
370 if (pwrite(mp->fd, bp->page, mp->pagesize, off) != mp->pagesize)
373 bp->flags &= ~MPOOL_DIRTY;
385 BKT *bp;
388 TAILQ_FOREACH(bp, head, hq)
389 if (bp->pgno == pgno) {
393 return (bp);
409 BKT *bp;
431 TAILQ_FOREACH(bp, &mp->lqh, q) {
432 (void)fprintf(stderr, "%s%d", sep, bp->pgno);
433 if (bp->flags & MPOOL_DIRTY)
435 if (bp->flags & MPOOL_PINNED)