diff options
author | tegge <tegge@FreeBSD.org> | 2007-02-04 23:42:02 +0000 |
---|---|---|
committer | tegge <tegge@FreeBSD.org> | 2007-02-04 23:42:02 +0000 |
commit | 06da13200299fbcb6cff807cd522cfeb0a4443b5 (patch) | |
tree | dd7b48c10bb6d8acf51d355319057b93a10aa345 /sys/ufs | |
parent | 176abfa1698e5b921183cada01c4ecb113e80685 (diff) | |
download | FreeBSD-src-06da13200299fbcb6cff807cd522cfeb0a4443b5.zip FreeBSD-src-06da13200299fbcb6cff807cd522cfeb0a4443b5.tar.gz |
Call pbgetvp() and pbrelvp() instead of setting b_vp directly.
PR: kern/108151
Diffstat (limited to 'sys/ufs')
-rw-r--r-- | sys/ufs/ffs/ffs_rawread.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/sys/ufs/ffs/ffs_rawread.c b/sys/ufs/ffs/ffs_rawread.c index eca31fc..ae26c1d 100644 --- a/sys/ufs/ffs/ffs_rawread.c +++ b/sys/ufs/ffs/ffs_rawread.c @@ -310,7 +310,7 @@ ffs_rawread_main(struct vnode *vp, /* XXX: Leave some bufs for swap */ bp = getpbuf(&ffsrawbufcnt); sa = bp->b_data; - bp->b_vp = vp; + pbgetvp(vp, bp); error = ffs_rawread_readahead(vp, udata, offset, resid, td, bp, sa); if (error != 0) @@ -324,7 +324,7 @@ ffs_rawread_main(struct vnode *vp, nbp = NULL; if (nbp != NULL) { nsa = nbp->b_data; - nbp->b_vp = vp; + pbgetvp(vp, nbp); nerror = ffs_rawread_readahead(vp, udata + @@ -337,6 +337,7 @@ ffs_rawread_main(struct vnode *vp, nbp, nsa); if (nerror) { + pbrelvp(nbp); relpbuf(nbp, &ffsrawbufcnt); nbp = NULL; } @@ -385,6 +386,7 @@ ffs_rawread_main(struct vnode *vp, nsa = tsa; if (resid <= bp->b_bufsize) { /* No more readaheads */ + pbrelvp(nbp); relpbuf(nbp, &ffsrawbufcnt); nbp = NULL; } else { /* Setup next readahead */ @@ -399,6 +401,7 @@ ffs_rawread_main(struct vnode *vp, nbp, nsa); if (nerror != 0) { + pbrelvp(nbp); relpbuf(nbp, &ffsrawbufcnt); nbp = NULL; } @@ -413,13 +416,16 @@ ffs_rawread_main(struct vnode *vp, } } - if (bp != NULL) + if (bp != NULL) { + pbrelvp(bp); relpbuf(bp, &ffsrawbufcnt); + } if (nbp != NULL) { /* Run down readahead buffer */ spl = splbio(); bwait(nbp, PRIBIO, "rawrd"); splx(spl); vunmapbuf(nbp); + pbrelvp(nbp); relpbuf(nbp, &ffsrawbufcnt); } |