summaryrefslogtreecommitdiffstats
path: root/sys/ufs/ffs
diff options
context:
space:
mode:
authortegge <tegge@FreeBSD.org>2007-02-04 23:42:02 +0000
committertegge <tegge@FreeBSD.org>2007-02-04 23:42:02 +0000
commit06da13200299fbcb6cff807cd522cfeb0a4443b5 (patch)
treedd7b48c10bb6d8acf51d355319057b93a10aa345 /sys/ufs/ffs
parent176abfa1698e5b921183cada01c4ecb113e80685 (diff)
downloadFreeBSD-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/ffs')
-rw-r--r--sys/ufs/ffs/ffs_rawread.c12
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);
}
OpenPOWER on IntegriCloud