Lines Matching refs:bp

1640 				struct nfsbuf *bp;
1647 error = nfs_buf_get(np, obn, biosize, NULL, NBLK_READ, &bp);
1651 FSDBG(512, bp, bp->nb_flags, 0, obn);
1652 SET(bp->nb_flags, NB_INVAL);
1653 nfs_buf_release(bp, 1);
1657 neweofoff = vap->va_data_size - NBOFF(bp);
1659 if ((bp->nb_dirtyend > 0) && (bp->nb_dirtyoff < neweofoff)) {
1661 if (bp->nb_dirtyend > neweofoff) {
1662 bp->nb_dirtyend = neweofoff;
1663 if (bp->nb_dirtyoff >= bp->nb_dirtyend)
1664 bp->nb_dirtyoff = bp->nb_dirtyend = 0;
1666 if ((bp->nb_dirtyend > 0) && (bp->nb_dirtyoff < neweofoff))
1669 bp->nb_dirty &= (1 << round_page_32(neweofoff)/PAGE_SIZE) - 1;
1670 if (bp->nb_dirty)
1673 FSDBG(512, bp, bp->nb_flags, 0, obn);
1674 SET(bp->nb_flags, NB_INVAL);
1675 nfs_buf_release(bp, 1);
1681 CLR(bp->nb_flags, (NB_DONE | NB_ERROR | NB_INVAL | NB_ASYNC | NB_READ));
1682 SET(bp->nb_flags, NB_STABLE | NB_NOCACHE);
1683 if (!IS_VALID_CRED(bp->nb_wcred)) {
1686 bp->nb_wcred = cred;
1688 error = nfs_buf_write(bp);
1689 // Note: bp has been released
1691 FSDBG(512, bp, 0xd00dee, 0xbad, error);
2215 struct nfsbuf *bp = NULL;
2237 error = nfs_buf_get(np, 0, NFS_MAXPATHLEN, vfs_context_thread(ctx), NBLK_READ, &bp);
2242 if (!ISSET(bp->nb_flags, NB_CACHE)) {
2244 buflen = bp->nb_bufsize;
2245 error = nmp->nm_funcs->nf_readlink_rpc(np, bp->nb_data, &buflen, ctx);
2247 SET(bp->nb_flags, NB_ERROR);
2248 bp->nb_error = error;
2250 bp->nb_validoff = 0;
2251 bp->nb_validend = buflen;
2254 if (!error && (bp->nb_validend > 0))
2255 error = uiomove(bp->nb_data, bp->nb_validend, uio);
2256 FSDBG(531, np, bp->nb_validend, 0, error);
2257 nfs_buf_release(bp, 1);
2505 struct nfsbuf *bp;
2609 error = nfs_buf_get(np, lbn, biosize, thd, NBLK_WRITE, &bp);
2613 NFS_BUF_MAP(bp);
2616 SET(bp->nb_flags, NB_NOCACHE);
2618 if (!IS_VALID_CRED(bp->nb_wcred)) {
2620 bp->nb_wcred = cred;
2636 if (bp->nb_dirtyend > 0) {
2637 if (on > bp->nb_dirtyend || (on + n) < bp->nb_dirtyoff || bp->nb_dirty) {
2638 FSDBG(515, np, uio_offset(uio), bp, 0xd15c001);
2641 CLR(bp->nb_flags, (NB_DONE | NB_ERROR | NB_INVAL));
2642 SET(bp->nb_flags, (NB_ASYNC | NB_STABLE));
2643 error = nfs_buf_write(bp);
2648 } else if (bp->nb_dirty) {
2656 if (bp->nb_dirty & ~pagemask) {
2657 FSDBG(515, np, uio_offset(uio), bp, 0xd15c002);
2660 CLR(bp->nb_flags, (NB_DONE | NB_ERROR | NB_INVAL));
2661 SET(bp->nb_flags, (NB_ASYNC | NB_STABLE));
2662 error = nfs_buf_write(bp);
2669 if (NBPGDIRTY(bp,firstpg) || NBPGDIRTY(bp,lastpg)) {
2670 FSDBG(515, np, uio_offset(uio), bp, 0xd15c003);
2671 bp->nb_dirtyoff = min(on, firstpg * PAGE_SIZE);
2672 if (NBPGDIRTY(bp,lastpg)) {
2673 bp->nb_dirtyend = (lastpg+1) * PAGE_SIZE;
2675 if (NBOFF(bp) + bp->nb_dirtyend > (off_t)np->n_size) {
2676 bp->nb_dirtyend = np->n_size - NBOFF(bp);
2677 if (bp->nb_dirtyoff >= bp->nb_dirtyend)
2678 bp->nb_dirtyoff = bp->nb_dirtyend = 0;
2681 bp->nb_dirtyend = on+n;
2705 if ((lbn == eofbn) && ISSET(bp->nb_flags, NB_CACHE)) {
2711 FSDBG(515, 0xb1ffa001, bp->nb_valid, pagemask, 0);
2712 if ((bp->nb_valid & pagemask) != pagemask) {
2714 if (on > bp->nb_validend) {
2716 for (i=bp->nb_validend/PAGE_SIZE; i <= (on - 1)/PAGE_SIZE; i++)
2717 NBPGVALID_SET(bp, i);
2718 NFS_BUF_MAP(bp);
2719 FSDBG(516, bp, bp->nb_validend, on - bp->nb_validend, 0xf01e);
2720 bzero((char *)bp->nb_data + bp->nb_validend,
2721 on - bp->nb_validend);
2725 NFS_BUF_MAP(bp);
2726 FSDBG(516, bp, neweofoff, PAGE_SIZE - (neweofoff & PAGE_MASK), 0xe0f);
2727 bzero((char *)bp->nb_data + neweofoff,
2764 if (bp->nb_validend == eofoff)
2765 bp->nb_validend += PAGE_SIZE - poff;
2776 if (NBOFF(bp) + bp->nb_dirtyend > (off_t)np->n_size) {
2777 bp->nb_dirtyend = np->n_size - NBOFF(bp);
2778 if (bp->nb_dirtyoff >= bp->nb_dirtyend)
2779 bp->nb_dirtyoff = bp->nb_dirtyend = 0;
2804 if (!ISSET(bp->nb_flags, NB_CACHE) && (n < biosize)) {
2812 if (firstpgoff && !NBPGVALID(bp,firstpg)) {
2817 if (lastpgoff && !NBPGVALID(bp,lastpg)) {
2823 if (ISSET(bp->nb_flags, NB_NOCACHE)) {
2836 SET(bp->nb_flags, NB_STABLE);
2846 if (NBPGDIRTY(bp,dirtypg))
2854 if (NBPGVALID(bp,((start-1)/PAGE_SIZE)))
2858 NFS_BUF_MAP(bp);
2860 boff = NBOFF(bp);
2868 uio_addiov(auio, CAST_USER_ADDR_T(bp->nb_data + start), on - start);
2872 SET(bp->nb_flags, (NB_NOCACHE|NB_STABLE));
2876 FSDBG(516, bp, (caddr_t)uio_curriovbase(auio) - bp->nb_data, uio_resid(auio), 0xd00dee01);
2881 if ((bp->nb_validoff < 0) || (bp->nb_validoff > start))
2882 bp->nb_validoff = start;
2883 if ((bp->nb_validend < 0) || (bp->nb_validend < on))
2884 bp->nb_validend = on;
2885 if ((off_t)np->n_size > boff + bp->nb_validend)
2886 bp->nb_validend = min(np->n_size - (boff + start), biosize);
2889 NBPGVALID_SET(bp, start/PAGE_SIZE);
2900 if (NBPGVALID(bp,end/PAGE_SIZE))
2913 FSDBG(516, bp, start, end - start, 0xd00dee00);
2914 bzero(bp->nb_data + start, end - start);
2919 uio_addiov(auio, CAST_USER_ADDR_T(bp->nb_data + start), end - start);
2923 SET(bp->nb_flags, (NB_NOCACHE|NB_STABLE));
2927 FSDBG(516, bp, (caddr_t)uio_curriovbase(auio) - bp->nb_data, uio_resid(auio), 0xd00dee02);
2933 if ((bp->nb_validoff < 0) || (bp->nb_validoff > start))
2934 bp->nb_validoff = start;
2935 if ((bp->nb_validend < 0) || (bp->nb_validend < end))
2936 bp->nb_validend = end;
2937 if ((off_t)np->n_size > boff + bp->nb_validend)
2938 bp->nb_validend = min(np->n_size - (boff + start), biosize);
2941 NBPGVALID_SET(bp, start/PAGE_SIZE);
2944 NBPGVALID_SET(bp, (end-1)/PAGE_SIZE);
2951 if (ISSET(bp->nb_flags, NB_ERROR)) {
2952 error = bp->nb_error;
2953 nfs_buf_release(bp, 1);
2961 NFS_BUF_MAP(bp);
2962 error = uiomove((char *)bp->nb_data + on, n, uio);
2964 SET(bp->nb_flags, NB_ERROR);
2965 nfs_buf_release(bp, 1);
2972 NBPGVALID_SET(bp, start/PAGE_SIZE);
2983 if (bp->nb_dirtyend > 0) {
2984 bp->nb_dirtyoff = min(on, bp->nb_dirtyoff);
2985 bp->nb_dirtyend = max((on + n), bp->nb_dirtyend);
2987 bp->nb_dirtyoff = on;
2988 bp->nb_dirtyend = on + n;
2990 if (bp->nb_validend <= 0 || bp->nb_validend < bp->nb_dirtyoff ||
2991 bp->nb_validoff > bp->nb_dirtyend) {
2992 bp->nb_validoff = bp->nb_dirtyoff;
2993 bp->nb_validend = bp->nb_dirtyend;
2995 bp->nb_validoff = min(bp->nb_validoff, bp->nb_dirtyoff);
2996 bp->nb_validend = max(bp->nb_validend, bp->nb_dirtyend);
2998 if (!ISSET(bp->nb_flags, NB_CACHE))
2999 nfs_buf_normalize_valid_range(np, bp);
3005 if (ISSET(bp->nb_flags, NB_NEEDCOMMIT)) {
3007 if (ISSET(bp->nb_flags, NB_NEEDCOMMIT)) {
3011 CLR(bp->nb_flags, NB_NEEDCOMMIT);
3016 error = nfs_buf_write(bp);
3020 (ioflag & IO_NOCACHE) || ISSET(bp->nb_flags, NB_NOCACHE)) {
3021 SET(bp->nb_flags, NB_ASYNC);
3022 error = nfs_buf_write(bp);
3027 if (!ISSET(bp->nb_flags, NB_DELWRI)) {
3032 nfs_buf_write_delayed(bp);
4682 struct nfsbuf *bp = NULL;
4762 error = nfs_buf_get(dnp, lbn, NFS_DIRBLKSIZ, thd, NBLK_READ, &bp);
4765 ndbhp = (struct nfs_dir_buf_header*)bp->nb_data;
4766 if (!ISSET(bp->nb_flags, NB_CACHE) || !ISSET(ndbhp->ndbh_flags, NDB_FULL)) {
4767 if (!ISSET(bp->nb_flags, NB_CACHE)) { /* initialize the buffer */
4773 error = nfs_buf_readdir(bp, ctx);
4777 nfs_buf_release(bp, 1);
4792 dp = NFS_DIR_BUF_FIRST_DIRENTRY(bp);
4866 nfs_buf_release(bp, 1);
4901 nfs_dir_buf_freespace(struct nfsbuf *bp, int rdirplus)
4903 struct nfs_dir_buf_header *ndbhp = (struct nfs_dir_buf_header*)bp->nb_data;
4908 space = bp->nb_bufsize - ndbhp->ndbh_entry_end;
4993 struct nfsbuf *bp, *lastbp;
5069 while ((bp = LIST_FIRST(&blist))) {
5070 LIST_REMOVE(bp, nb_vnbufs);
5072 LIST_INSERT_HEAD(&dnp->n_cleanblkhd, bp, nb_vnbufs);
5074 LIST_INSERT_AFTER(lastbp, bp, nb_vnbufs);
5075 lastbp = bp;
5078 nfs_buf_refget(bp);
5079 if (nfs_buf_acquire(bp, NBAC_NOWAIT, 0, 0)) {
5081 nfs_buf_refrele(bp);
5084 nfs_buf_refrele(bp);
5087 ndbhp = (struct nfs_dir_buf_header*)bp->nb_data;
5088 dp = NFS_DIR_BUF_FIRST_DIRENTRY(bp);
5106 *lbnp = bp->nb_lblkno;
5113 nfs_buf_drop(bp);
5140 struct nfsbuf *bp,
5156 ndbhp = (struct nfs_dir_buf_header*)bp->nb_data;
5157 dp = NFS_DIR_BUF_FIRST_DIRENTRY(bp);
5162 nvattrp = NFS_DIR_BUF_NVATTR(bp, i);
5163 if ((ndbhp->ndbh_ncgen != bp->nb_np->n_ncgen) || (fhp->fh_len == 0) ||
5218 struct nfsbuf *bp, *lastbp, *foundbp;
5231 if ((error = nfs_buf_get(dnp, lbn, NFS_DIRBLKSIZ, thd, NBLK_READ|NBLK_ONLYVALID, &bp)))
5233 if (!bp)
5236 error = nfs_dir_buf_search(bp, cnp, &fh, &nvattr, &xid, &attrstamp, &nextlbn, purge ? NDBS_PURGE : 0);
5237 nfs_buf_release(bp, 0);
5264 while ((bp = LIST_FIRST(&blist))) {
5265 LIST_REMOVE(bp, nb_vnbufs);
5267 LIST_INSERT_HEAD(&dnp->n_cleanblkhd, bp, nb_vnbufs);
5269 LIST_INSERT_AFTER(lastbp, bp, nb_vnbufs);
5270 lastbp = bp;
5275 nfs_buf_refget(bp);
5276 lbn = bp->nb_lblkno;
5277 if (nfs_buf_acquire(bp, NBAC_NOWAIT, 0, 0)) {
5279 nfs_buf_refrele(bp);
5282 nfs_buf_refrele(bp);
5284 error = nfs_dir_buf_search(bp, cnp, &fh, &nvattr, &xid, &attrstamp, NULL, purge ? NDBS_PURGE : 0);
5289 foundbp = bp;
5291 nfs_buf_drop(bp);
5315 error = nfs_buf_get(dnp, lbn, NFS_DIRBLKSIZ, thd, NBLK_READ|NBLK_ONLYVALID, &bp);
5316 if (!error && bp) {
5319 nfs_dir_buf_search(bp, cnp, &fh, &nvattr, &xid, &attrstamp, NULL, NDBS_UPDATE);
5320 nfs_buf_release(bp, 0);
5347 nfs3_readdir_rpc(nfsnode_t dnp, struct nfsbuf *bp, vfs_context_t ctx)
5377 ndbhp = (struct nfs_dir_buf_header*)bp->nb_data;
5378 dp = NFS_DIR_BUF_FIRST_DIRENTRY(bp);
5385 cookie = bp->nb_lblkno;
5398 while (nfs_dir_buf_freespace(bp, rdirplus) && !(ndbhp->ndbh_flags & NDB_FULL)) {
5475 space_free = nfs_dir_buf_freespace(bp, rdirplus);
5486 nfs_buf_release(bp, 0);
5488 bp = NULL;
5489 error = nfs_buf_get(dnp, lastcookie, NFS_DIRBLKSIZ, vfs_context_thread(ctx), NBLK_READ, &bp);
5492 ndbhp = (struct nfs_dir_buf_header*)bp->nb_data;
5497 space_free = nfs_dir_buf_freespace(bp, rdirplus);
5498 dp = NFS_DIR_BUF_FIRST_DIRENTRY(bp);
5527 nvattrp = NFS_DIR_BUF_NVATTR(bp, ndbhp->ndbh_count);
5576 ndbhp->ndbh_entry_end = (char*)dp - bp->nb_data;
5597 nfs_buf_release(bp, 0);
5598 bp = NULL;
5608 if (bp_dropped && bp)
5609 nfs_buf_release(bp, 0);
6974 struct nfsbuf *bp;
7024 if ((bp = nfs_buf_incore(np, lbn))) {
7025 FSDBG(323, off, bp, bp->nb_lflags, bp->nb_flags);
7026 if (nfs_buf_acquire(bp, NBAC_NOWAIT, 0, 0)) {
7034 if (bp->nb_dirtyend > 0) {
7051 boff = NBOFF(bp);
7059 if ((bp->nb_dirtyoff < start) &&
7060 (bp->nb_dirtyend > end)) {
7069 FSDBG(323, np, bp, 0xd00deebc, EBUSY);
7070 nfs_buf_remfree(bp);
7071 TAILQ_INSERT_HEAD(&nfsbufdelwri, bp, nb_free);
7073 nfs_buf_drop(bp);
7081 if ((bp->nb_dirtyoff < start) ||
7082 (bp->nb_dirtyend > end)) {
7084 if (bp->nb_dirtyoff < start)
7085 bp->nb_dirtyend = min(bp->nb_dirtyend, start);
7086 if (bp->nb_dirtyend > end)
7087 bp->nb_dirtyoff = max(bp->nb_dirtyoff, end);
7088 FSDBG(323, bp, bp->nb_dirtyoff, bp->nb_dirtyend, 0xd00dee00);
7090 nfs_buf_drop(bp);
7095 nfs_buf_remfree(bp);
7097 SET(bp->nb_flags, NB_INVAL);
7099 if (ISSET(bp->nb_flags, NB_NEEDCOMMIT)) {
7100 CLR(bp->nb_flags, NB_NEEDCOMMIT);
7105 nfs_buf_release(bp, 1);