diff options
| author | Poul-Henning Kamp <phk@FreeBSD.org> | 2003-01-04 22:10:36 +0000 |
|---|---|---|
| committer | Poul-Henning Kamp <phk@FreeBSD.org> | 2003-01-04 22:10:36 +0000 |
| commit | f5b11b6e2ddb88980c24cb32a5bbb1853397b3e5 (patch) | |
| tree | c7a5f4c248cdb6b6c66f82139acb14ed7ec6d6d0 /sys/kern/vfs_bio.c | |
| parent | a360a43dd58eb4f5debd57c35aa3800b7f551346 (diff) | |
Notes
Diffstat (limited to 'sys/kern/vfs_bio.c')
| -rw-r--r-- | sys/kern/vfs_bio.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c index 65fcb33ed220..784a5c0a5bd9 100644 --- a/sys/kern/vfs_bio.c +++ b/sys/kern/vfs_bio.c @@ -701,7 +701,10 @@ breadn(struct vnode * vp, daddr_t blkno, int size, if (bp->b_rcred == NOCRED && cred != NOCRED) bp->b_rcred = crhold(cred); vfs_busy_pages(bp, 0); - VOP_STRATEGY(vp, bp); + if (vp->v_type == VCHR) + VOP_SPECSTRATEGY(vp, bp); + else + VOP_STRATEGY(vp, bp); ++readwait; } @@ -721,7 +724,10 @@ breadn(struct vnode * vp, daddr_t blkno, int size, rabp->b_rcred = crhold(cred); vfs_busy_pages(rabp, 0); BUF_KERNPROC(rabp); - VOP_STRATEGY(vp, rabp); + if (vp->v_type == VCHR) + VOP_SPECSTRATEGY(vp, bp); + else + VOP_STRATEGY(vp, bp); } else { brelse(rabp); } @@ -855,7 +861,10 @@ bwrite(struct buf * bp) splx(s); if (oldflags & B_ASYNC) BUF_KERNPROC(bp); - VOP_STRATEGY(bp->b_vp, bp); + if (bp->b_vp->v_type == VCHR) + VOP_SPECSTRATEGY(bp->b_vp, bp); + else + VOP_STRATEGY(bp->b_vp, bp); if ((oldflags & B_ASYNC) == 0) { int rtval = bufwait(bp); |
