Lines Matching refs:bp
111 BUFHEAD *bp;
119 bp = prev_bp->ovfl;
120 if (!bp || (bp->addr != addr))
121 bp = NULL;
131 bp = PTROF(segp[segment_ndx]);
136 if (!bp) {
137 bp = newbuf(hashp, addr, prev_bp);
138 if (!bp ||
139 __get_page(hashp, bp->page, addr, !prev_bp, is_disk, 0))
143 (BUFHEAD *)(void *)((u_long)bp | is_disk_mask);
145 BUF_REMOVE(bp);
146 MRU_INSERT(bp);
148 return (bp);
160 BUFHEAD *bp; /* The buffer we're going to use */
168 bp = LRU;
173 if (hashp->nbufs || (bp->flags & BUF_PIN)) {
175 if ((bp = calloc(1, sizeof(BUFHEAD))) == NULL)
177 if ((bp->page = calloc(1, (size_t)hashp->BSIZE)) == NULL) {
178 free(bp);
185 BUF_REMOVE(bp);
190 if ((bp->addr != 0) || (bp->flags & BUF_BUCKET)) {
195 shortp = (uint16_t *)(void *)bp->page;
198 if ((bp->flags & BUF_MOD) && __put_page(hashp, bp->page,
199 bp->addr, (int)IS_BUCKET(bp->flags), 0))
209 if (IS_BUCKET(bp->flags)) {
210 segment_ndx = bp->addr & (hashp->SGSIZE - 1);
211 segp = hashp->dir[bp->addr >> hashp->SSHIFT];
215 ((bp->flags & BUF_MOD) ||
226 for (xbp = bp; xbp->ovfl;) {
252 bp->addr = addr;
255 bp->addr, (bp->ovfl ? bp->ovfl->addr : 0), 0);
257 bp->ovfl = NULL;
266 (bp ? bp->addr : 0));
268 prev_bp->ovfl = bp;
269 bp->flags = 0;
271 bp->flags = BUF_BUCKET;
272 MRU_INSERT(bp);
273 return (bp);
302 BUFHEAD *bp;
307 for (bp = LRU; bp != &hashp->bufhead;) {
309 if (bp->addr || IS_BUCKET(bp->flags)) {
310 if (to_disk && (bp->flags & BUF_MOD) &&
311 __put_page(hashp, bp->page,
312 bp->addr, IS_BUCKET(bp->flags), 0))
317 if (bp->page) {
318 (void)memset(bp->page, 0, (size_t)hashp->BSIZE);
319 free(bp->page);
321 BUF_REMOVE(bp);
322 free(bp);
323 bp = LRU;
325 bp = bp->prev;
331 __reclaim_buf(HTAB *hashp, BUFHEAD *bp)
333 bp->ovfl = 0;
334 bp->addr = 0;
335 bp->flags = 0;
336 BUF_REMOVE(bp);
337 LRU_INSERT(bp);