aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/vn
diff options
context:
space:
mode:
authorPoul-Henning Kamp <phk@FreeBSD.org>2000-03-20 10:44:49 +0000
committerPoul-Henning Kamp <phk@FreeBSD.org>2000-03-20 10:44:49 +0000
commit21144e3bf1f416a758f6546bfabfa8e4e8cba507 (patch)
treec87da548b12fd12c48f1e5c89d087ddfa088ee78 /sys/dev/vn
parent44bdcfa638d9ca31180090798a88116220f7f625 (diff)
downloadsrc-21144e3bf1f416a758f6546bfabfa8e4e8cba507.tar.gz
src-21144e3bf1f416a758f6546bfabfa8e4e8cba507.zip
Remove B_READ, B_WRITE and B_FREEBUF and replace them with a new
field in struct buf: b_iocmd. The b_iocmd is enforced to have exactly one bit set. B_WRITE was bogusly defined as zero giving rise to obvious coding mistakes. Also eliminate the redundant struct buf flag B_CALL, it can just as efficiently be done by comparing b_iodone to NULL. Should you get a panic or drop into the debugger, complaining about "b_iocmd", don't continue. It is likely to write on your disk where it should have been reading. This change is a step in the direction towards a stackable BIO capability. A lot of this patch were machine generated (Thanks to style(9) compliance!) Vinum users: Greg has not had time to test this yet, be careful.
Notes
Notes: svn path=/head/; revision=58345
Diffstat (limited to 'sys/dev/vn')
-rw-r--r--sys/dev/vn/vn.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/sys/dev/vn/vn.c b/sys/dev/vn/vn.c
index 49fa104a0918..ba0caad0694c 100644
--- a/sys/dev/vn/vn.c
+++ b/sys/dev/vn/vn.c
@@ -101,7 +101,7 @@ static d_strategy_t vnstrategy;
/*
* cdevsw
* D_DISK we want to look like a disk
- * D_CANFREE We support B_FREEBUF
+ * D_CANFREE We support BIO_DELETE
*/
static struct cdevsw vn_cdevsw = {
@@ -286,7 +286,7 @@ vnstrategy(struct buf *bp)
unit = dkunit(bp->b_dev);
vn = bp->b_dev->si_drv1;
- if (!vn)
+ if (vn == NULL)
vn = vnfindvn(bp->b_dev);
IFOPT(vn, VN_DEBUG)
@@ -349,7 +349,7 @@ vnstrategy(struct buf *bp)
bp->b_pblkno = pbn;
}
- if (vn->sc_vp && (bp->b_flags & B_FREEBUF)) {
+ if (vn->sc_vp && (bp->b_iocmd == BIO_DELETE)) {
/*
* Not handled for vnode-backed element yet.
*/
@@ -368,7 +368,7 @@ vnstrategy(struct buf *bp)
auio.uio_iovcnt = 1;
auio.uio_offset = (vm_ooffset_t)bp->b_pblkno * vn->sc_secsize;
auio.uio_segflg = UIO_SYSSPACE;
- if( bp->b_flags & B_READ)
+ if(bp->b_iocmd == BIO_READ)
auio.uio_rw = UIO_READ;
else
auio.uio_rw = UIO_WRITE;
@@ -378,7 +378,7 @@ vnstrategy(struct buf *bp)
isvplocked = 1;
vn_lock(vn->sc_vp, LK_EXCLUSIVE | LK_RETRY, curproc);
}
- if( bp->b_flags & B_READ)
+ if(bp->b_iocmd == BIO_READ)
error = VOP_READ(vn->sc_vp, &auio, 0, vn->sc_cred);
else
error = VOP_WRITE(vn->sc_vp, &auio, 0, vn->sc_cred);
@@ -399,12 +399,12 @@ vnstrategy(struct buf *bp)
*
* ( handles read, write, freebuf )
*
- * Note: if we pre-reserved swap, B_FREEBUF is disabled
+ * Note: if we pre-reserved swap, BIO_DELETE is disabled
*/
KASSERT((bp->b_bufsize & (vn->sc_secsize - 1)) == 0,
("vnstrategy: buffer %p too small for physio", bp));
- if ((bp->b_flags & B_FREEBUF) && TESTOPT(vn, VN_RESERVE)) {
+ if ((bp->b_iocmd == BIO_DELETE) && TESTOPT(vn, VN_RESERVE)) {
biodone(bp);
} else {
vm_pager_strategy(vn->sc_object, bp);