Lines Matching refs:bp
573 struct buf *bp; in vnode_pager_input_smlfs() local
607 bp = uma_zalloc(vnode_pbuf_zone, M_WAITOK); in vnode_pager_input_smlfs()
610 bp->b_iocmd = BIO_READ; in vnode_pager_input_smlfs()
611 bp->b_iodone = bdone; in vnode_pager_input_smlfs()
612 KASSERT(bp->b_rcred == NOCRED, ("leaking read ucred")); in vnode_pager_input_smlfs()
613 KASSERT(bp->b_wcred == NOCRED, ("leaking write ucred")); in vnode_pager_input_smlfs()
614 bp->b_rcred = crhold(curthread->td_ucred); in vnode_pager_input_smlfs()
615 bp->b_wcred = crhold(curthread->td_ucred); in vnode_pager_input_smlfs()
616 bp->b_data = (caddr_t)sf_buf_kva(sf) + i * bsize; in vnode_pager_input_smlfs()
617 bp->b_blkno = fileaddr; in vnode_pager_input_smlfs()
618 pbgetbo(bo, bp); in vnode_pager_input_smlfs()
619 bp->b_vp = vp; in vnode_pager_input_smlfs()
620 bp->b_bcount = bsize; in vnode_pager_input_smlfs()
621 bp->b_bufsize = bsize; in vnode_pager_input_smlfs()
622 bp->b_runningbufspace = bp->b_bufsize; in vnode_pager_input_smlfs()
623 atomic_add_long(&runningbufspace, bp->b_runningbufspace); in vnode_pager_input_smlfs()
626 bp->b_iooffset = dbtob(bp->b_blkno); in vnode_pager_input_smlfs()
627 bstrategy(bp); in vnode_pager_input_smlfs()
629 bwait(bp, PVM, "vnsrd"); in vnode_pager_input_smlfs()
631 if ((bp->b_ioflags & BIO_ERROR) != 0) { in vnode_pager_input_smlfs()
632 KASSERT(bp->b_error != 0, in vnode_pager_input_smlfs()
634 error = bp->b_error; in vnode_pager_input_smlfs()
640 bp->b_vp = NULL; in vnode_pager_input_smlfs()
641 pbrelbo(bp); in vnode_pager_input_smlfs()
642 uma_zfree(vnode_pbuf_zone, bp); in vnode_pager_input_smlfs()
798 struct buf *bp; in vnode_pager_generic_getpages() local
834 bp = uma_zalloc(vnode_pbuf_zone, M_WAITOK); in vnode_pager_generic_getpages()
835 MPASS((bp->b_flags & B_MAXPHYS) != 0); in vnode_pager_generic_getpages()
842 error = VOP_BMAP(vp, foff / bsize, &bo, &bp->b_blkno, &after, &before); in vnode_pager_generic_getpages()
844 uma_zfree(vnode_pbuf_zone, bp); in vnode_pager_generic_getpages()
856 uma_zfree(vnode_pbuf_zone, bp); in vnode_pager_generic_getpages()
865 uma_zfree(vnode_pbuf_zone, bp); in vnode_pager_generic_getpages()
880 if (bp->b_blkno == -1) { in vnode_pager_generic_getpages()
884 uma_zfree(vnode_pbuf_zone, bp); in vnode_pager_generic_getpages()
893 blkno0 = bp->b_blkno; in vnode_pager_generic_getpages()
895 bp->b_blkno += (foff % bsize) / DEV_BSIZE; in vnode_pager_generic_getpages()
945 i = bp->b_npages = 0; in vnode_pager_generic_getpages()
964 bp->b_pages[j] = bp->b_pages[j + in vnode_pager_generic_getpages()
968 bp->b_pages[tpindex - startpindex] = p; in vnode_pager_generic_getpages()
971 bp->b_pgbefore = i; in vnode_pager_generic_getpages()
972 bp->b_npages += i; in vnode_pager_generic_getpages()
973 bp->b_blkno -= IDX_TO_OFF(i) / DEV_BSIZE; in vnode_pager_generic_getpages()
975 bp->b_pgbefore = 0; in vnode_pager_generic_getpages()
979 bp->b_pages[i] = m[j]; in vnode_pager_generic_getpages()
980 bp->b_npages += count; in vnode_pager_generic_getpages()
1000 bp->b_pages[i] = p; in vnode_pager_generic_getpages()
1003 bp->b_pgafter = i - bp->b_npages; in vnode_pager_generic_getpages()
1004 bp->b_npages = i; in vnode_pager_generic_getpages()
1006 bp->b_pgafter = 0; in vnode_pager_generic_getpages()
1013 *a_rbehind = bp->b_pgbefore; in vnode_pager_generic_getpages()
1015 *a_rahead = bp->b_pgafter; in vnode_pager_generic_getpages()
1018 KASSERT(bp->b_npages <= atop(maxphys), in vnode_pager_generic_getpages()
1019 ("%s: buf %p overflowed", __func__, bp)); in vnode_pager_generic_getpages()
1020 for (int j = 1, prev = 0; j < bp->b_npages; j++) { in vnode_pager_generic_getpages()
1021 if (bp->b_pages[j] == bogus_page) in vnode_pager_generic_getpages()
1023 KASSERT(bp->b_pages[j]->pindex - bp->b_pages[prev]->pindex == in vnode_pager_generic_getpages()
1025 __func__, bp)); in vnode_pager_generic_getpages()
1035 foff = IDX_TO_OFF(bp->b_pages[0]->pindex); in vnode_pager_generic_getpages()
1036 bytecount = bp->b_npages << PAGE_SHIFT; in vnode_pager_generic_getpages()
1050 bp->b_data = unmapped_buf; in vnode_pager_generic_getpages()
1051 bp->b_offset = 0; in vnode_pager_generic_getpages()
1053 bp->b_data = bp->b_kvabase; in vnode_pager_generic_getpages()
1054 pmap_qenter((vm_offset_t)bp->b_data, bp->b_pages, bp->b_npages); in vnode_pager_generic_getpages()
1058 bp->b_iocmd = BIO_READ; in vnode_pager_generic_getpages()
1059 KASSERT(bp->b_rcred == NOCRED, ("leaking read ucred")); in vnode_pager_generic_getpages()
1060 KASSERT(bp->b_wcred == NOCRED, ("leaking write ucred")); in vnode_pager_generic_getpages()
1061 bp->b_rcred = crhold(curthread->td_ucred); in vnode_pager_generic_getpages()
1062 bp->b_wcred = crhold(curthread->td_ucred); in vnode_pager_generic_getpages()
1063 pbgetbo(bo, bp); in vnode_pager_generic_getpages()
1064 bp->b_vp = vp; in vnode_pager_generic_getpages()
1065 bp->b_bcount = bp->b_bufsize = bp->b_runningbufspace = bytecount; in vnode_pager_generic_getpages()
1066 bp->b_iooffset = dbtob(bp->b_blkno); in vnode_pager_generic_getpages()
1067 KASSERT(IDX_TO_OFF(m[0]->pindex - bp->b_pages[0]->pindex) == in vnode_pager_generic_getpages()
1068 (blkno0 - bp->b_blkno) * DEV_BSIZE + in vnode_pager_generic_getpages()
1072 (uintmax_t)m[0]->pindex, (uintmax_t)bp->b_pages[0]->pindex, in vnode_pager_generic_getpages()
1073 (uintmax_t)blkno0, (uintmax_t)bp->b_blkno)); in vnode_pager_generic_getpages()
1075 atomic_add_long(&runningbufspace, bp->b_runningbufspace); in vnode_pager_generic_getpages()
1077 VM_CNT_ADD(v_vnodepgsin, bp->b_npages); in vnode_pager_generic_getpages()
1080 bp->b_pgiodone = iodone; in vnode_pager_generic_getpages()
1081 bp->b_caller1 = arg; in vnode_pager_generic_getpages()
1082 bp->b_iodone = vnode_pager_generic_getpages_done_async; in vnode_pager_generic_getpages()
1083 bp->b_flags |= B_ASYNC; in vnode_pager_generic_getpages()
1084 BUF_KERNPROC(bp); in vnode_pager_generic_getpages()
1085 bstrategy(bp); in vnode_pager_generic_getpages()
1088 bp->b_iodone = bdone; in vnode_pager_generic_getpages()
1089 bstrategy(bp); in vnode_pager_generic_getpages()
1090 bwait(bp, PVM, "vnread"); in vnode_pager_generic_getpages()
1091 error = vnode_pager_generic_getpages_done(bp); in vnode_pager_generic_getpages()
1092 for (i = 0; i < bp->b_npages; i++) in vnode_pager_generic_getpages()
1093 bp->b_pages[i] = NULL; in vnode_pager_generic_getpages()
1094 bp->b_vp = NULL; in vnode_pager_generic_getpages()
1095 pbrelbo(bp); in vnode_pager_generic_getpages()
1096 uma_zfree(vnode_pbuf_zone, bp); in vnode_pager_generic_getpages()
1102 vnode_pager_generic_getpages_done_async(struct buf *bp) in vnode_pager_generic_getpages_done_async() argument
1106 error = vnode_pager_generic_getpages_done(bp); in vnode_pager_generic_getpages_done_async()
1108 bp->b_pgiodone(bp->b_caller1, bp->b_pages + bp->b_pgbefore, in vnode_pager_generic_getpages_done_async()
1109 bp->b_npages - bp->b_pgbefore - bp->b_pgafter, error); in vnode_pager_generic_getpages_done_async()
1110 for (int i = 0; i < bp->b_npages; i++) in vnode_pager_generic_getpages_done_async()
1111 bp->b_pages[i] = NULL; in vnode_pager_generic_getpages_done_async()
1112 bp->b_vp = NULL; in vnode_pager_generic_getpages_done_async()
1113 pbrelbo(bp); in vnode_pager_generic_getpages_done_async()
1114 uma_zfree(vnode_pbuf_zone, bp); in vnode_pager_generic_getpages_done_async()
1118 vnode_pager_generic_getpages_done(struct buf *bp) in vnode_pager_generic_getpages_done() argument
1124 KASSERT((bp->b_ioflags & BIO_ERROR) == 0 || bp->b_error != 0, in vnode_pager_generic_getpages_done()
1126 error = (bp->b_ioflags & BIO_ERROR) != 0 ? bp->b_error : 0; in vnode_pager_generic_getpages_done()
1127 object = bp->b_vp->v_object; in vnode_pager_generic_getpages_done()
1129 if (error == 0 && bp->b_bcount != bp->b_npages * PAGE_SIZE) { in vnode_pager_generic_getpages_done()
1130 if (!buf_mapped(bp)) { in vnode_pager_generic_getpages_done()
1131 bp->b_data = bp->b_kvabase; in vnode_pager_generic_getpages_done()
1132 pmap_qenter((vm_offset_t)bp->b_data, bp->b_pages, in vnode_pager_generic_getpages_done()
1133 bp->b_npages); in vnode_pager_generic_getpages_done()
1135 bzero(bp->b_data + bp->b_bcount, in vnode_pager_generic_getpages_done()
1136 PAGE_SIZE * bp->b_npages - bp->b_bcount); in vnode_pager_generic_getpages_done()
1138 if (buf_mapped(bp)) { in vnode_pager_generic_getpages_done()
1139 pmap_qremove((vm_offset_t)bp->b_data, bp->b_npages); in vnode_pager_generic_getpages_done()
1140 bp->b_data = unmapped_buf; in vnode_pager_generic_getpages_done()
1150 for (i = 0; i < bp->b_pgbefore; i++) in vnode_pager_generic_getpages_done()
1151 vm_page_free_invalid(bp->b_pages[i]); in vnode_pager_generic_getpages_done()
1152 for (i = bp->b_npages - bp->b_pgafter; i < bp->b_npages; i++) in vnode_pager_generic_getpages_done()
1153 vm_page_free_invalid(bp->b_pages[i]); in vnode_pager_generic_getpages_done()
1160 for (i = 0, tfoff = IDX_TO_OFF(bp->b_pages[0]->pindex); in vnode_pager_generic_getpages_done()
1161 i < bp->b_npages; i++, tfoff = nextoff) { in vnode_pager_generic_getpages_done()
1165 mt = bp->b_pages[i]; in vnode_pager_generic_getpages_done()
1193 if (i < bp->b_pgbefore || i >= bp->b_npages - bp->b_pgafter) in vnode_pager_generic_getpages_done()