summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/arch/alpha/alpha/disksubr.c8
-rw-r--r--sys/arch/amd64/amd64/disksubr.c6
-rw-r--r--sys/arch/amd64/amd64/dkcsum.c4
-rw-r--r--sys/arch/arm/arm/disksubr.c6
-rw-r--r--sys/arch/aviion/aviion/disksubr.c4
-rw-r--r--sys/arch/hp300/dev/ct.c4
-rw-r--r--sys/arch/hp300/dev/mt.c4
-rw-r--r--sys/arch/hp300/hp300/disksubr.c8
-rw-r--r--sys/arch/hppa/hppa/disksubr.c14
-rw-r--r--sys/arch/hppa64/hppa64/disksubr.c14
-rw-r--r--sys/arch/i386/i386/disksubr.c6
-rw-r--r--sys/arch/i386/i386/dkcsum.c4
-rw-r--r--sys/arch/landisk/landisk/disksubr.c6
-rw-r--r--sys/arch/luna88k/luna88k/disksubr.c8
-rw-r--r--sys/arch/mac68k/mac68k/disksubr.c10
-rw-r--r--sys/arch/macppc/macppc/disksubr.c12
-rw-r--r--sys/arch/mvme68k/mvme68k/disksubr.c8
-rw-r--r--sys/arch/mvme88k/mvme88k/disksubr.c8
-rw-r--r--sys/arch/mvmeppc/mvmeppc/disksubr.c6
-rw-r--r--sys/arch/sgi/sgi/disksubr.c12
-rw-r--r--sys/arch/socppc/socppc/disksubr.c12
-rw-r--r--sys/arch/sparc/dev/fd.c4
-rw-r--r--sys/arch/sparc/sparc/disksubr.c6
-rw-r--r--sys/arch/sparc64/dev/fd.c4
-rw-r--r--sys/arch/sparc64/sparc64/disksubr.c6
-rw-r--r--sys/arch/vax/uba/ts.c4
-rw-r--r--sys/arch/vax/vax/disksubr.c8
-rw-r--r--sys/conf/files3
-rw-r--r--sys/dev/isa/fd.c4
-rw-r--r--sys/isofs/udf/udf_subr.c6
-rw-r--r--sys/kern/kern_sched.c4
-rw-r--r--sys/kern/spec_vnops.c4
-rw-r--r--sys/kern/subr_disk.c6
-rw-r--r--sys/kern/vfs_bio.c418
-rw-r--r--sys/kern/vfs_subr.c16
-rw-r--r--sys/miscfs/specfs/spec_vnops.c4
-rw-r--r--sys/nfs/nfs_syscalls.c5
-rw-r--r--sys/nfs/nfs_vnops.c17
-rw-r--r--sys/sys/buf.h27
-rw-r--r--sys/sys/mount.h25
-rw-r--r--sys/ufs/ext2fs/ext2fs_bmap.c3
-rw-r--r--sys/ufs/ext2fs/ext2fs_inode.c4
-rw-r--r--sys/ufs/ffs/ffs_inode.c4
-rw-r--r--sys/ufs/ffs/ffs_softdep.c8
-rw-r--r--sys/ufs/ffs/ffs_vnops.c5
-rw-r--r--sys/ufs/ufs/ufs_bmap.c4
-rw-r--r--sys/ufs/ufs/ufs_dirhash.c3
-rw-r--r--sys/uvm/uvm_swap.c4
48 files changed, 403 insertions, 367 deletions
diff --git a/sys/arch/alpha/alpha/disksubr.c b/sys/arch/alpha/alpha/disksubr.c
index 4c88f82fff7..3d3ebf48e5f 100644
--- a/sys/arch/alpha/alpha/disksubr.c
+++ b/sys/arch/alpha/alpha/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.90 2008/06/10 20:50:22 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.91 2008/06/11 12:35:38 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */
/*
@@ -67,7 +67,7 @@ readdisklabel(dev_t dev, void (*strat)(struct buf *),
bp->b_blkno = LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp)) {
msg = "disk label read error";
@@ -121,7 +121,7 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
bp->b_blkno = LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if ((error = biowait(bp)) != 0)
goto done;
@@ -135,7 +135,7 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
csum += *p++;
*p = csum;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/amd64/amd64/disksubr.c b/sys/arch/amd64/amd64/disksubr.c
index bdb21c167b1..17320717cd2 100644
--- a/sys/arch/amd64/amd64/disksubr.c
+++ b/sys/arch/amd64/amd64/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.54 2008/06/10 20:50:22 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.55 2008/06/11 12:35:40 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */
/*
@@ -141,14 +141,14 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
/* Read it in, slap the new label in, and write it back out */
bp->b_blkno = partoff + LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if ((error = biowait(bp)) != 0)
goto done;
dlp = (struct disklabel *)(bp->b_data + LABELOFFSET);
*dlp = *lp;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/amd64/amd64/dkcsum.c b/sys/arch/amd64/amd64/dkcsum.c
index 97a03de1dee..9edd48c4745 100644
--- a/sys/arch/amd64/amd64/dkcsum.c
+++ b/sys/arch/amd64/amd64/dkcsum.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dkcsum.c,v 1.12 2008/06/10 20:50:22 beck Exp $ */
+/* $OpenBSD: dkcsum.c,v 1.13 2008/06/11 12:35:40 deraadt Exp $ */
/*-
* Copyright (c) 1997 Niklas Hallqvist. All rights reserved.
@@ -106,7 +106,7 @@ dkcsumattach(void)
/* Read blocks to cksum. XXX maybe a d_read should be used. */
bp->b_blkno = 0;
bp->b_bcount = bios_cksumlen * DEV_BSIZE;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
bp->b_cylinder = 0;
(*bdsw->d_strategy)(bp);
if ((error = biowait(bp))) {
diff --git a/sys/arch/arm/arm/disksubr.c b/sys/arch/arm/arm/disksubr.c
index 8cc30d5db05..ae50df5e58b 100644
--- a/sys/arch/arm/arm/disksubr.c
+++ b/sys/arch/arm/arm/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.49 2008/06/10 20:50:22 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.50 2008/06/11 12:35:40 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */
/*
@@ -114,14 +114,14 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
/* Read it in, slap the new label in, and write it back out */
bp->b_blkno = partoff + LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if ((error = biowait(bp)) != 0)
goto done;
dlp = (struct disklabel *)(bp->b_data + LABELOFFSET);
*dlp = *lp;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/aviion/aviion/disksubr.c b/sys/arch/aviion/aviion/disksubr.c
index bc76d44841a..dbe54a4f5fb 100644
--- a/sys/arch/aviion/aviion/disksubr.c
+++ b/sys/arch/aviion/aviion/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.41 2008/06/10 20:50:22 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.42 2008/06/11 12:35:40 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */
/*
@@ -121,7 +121,7 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
dlp = (struct disklabel *)(bp->b_data + LABELOFFSET);
*dlp = *lp;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/hp300/dev/ct.c b/sys/arch/hp300/dev/ct.c
index ce23c6eeba7..9d333952869 100644
--- a/sys/arch/hp300/dev/ct.c
+++ b/sys/arch/hp300/dev/ct.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ct.c,v 1.19 2008/06/10 20:50:22 beck Exp $ */
+/* $OpenBSD: ct.c,v 1.20 2008/06/11 12:35:40 deraadt Exp $ */
/* $NetBSD: ct.c,v 1.21 1997/04/02 22:37:23 scottr Exp $ */
/*
@@ -431,7 +431,7 @@ ctcommand(dev, cmd, cnt)
}
while (cnt-- > 0) {
- bp->b_flags = B_BUSY | B_RAW;
+ bp->b_flags = B_BUSY;
if (cmd == MTBSF) {
sc->sc_blkno = sc->sc_eofs[sc->sc_eofp];
sc->sc_eofp--;
diff --git a/sys/arch/hp300/dev/mt.c b/sys/arch/hp300/dev/mt.c
index 13385b29ece..4e7de80a3a8 100644
--- a/sys/arch/hp300/dev/mt.c
+++ b/sys/arch/hp300/dev/mt.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mt.c,v 1.19 2008/06/10 20:50:22 beck Exp $ */
+/* $OpenBSD: mt.c,v 1.20 2008/06/11 12:35:41 deraadt Exp $ */
/* $NetBSD: mt.c,v 1.8 1997/03/31 07:37:29 scottr Exp $ */
/*
@@ -407,7 +407,7 @@ mtcommand(dev, cmd, cnt)
bp->b_cmd = cmd;
bp->b_dev = dev;
do {
- bp->b_flags = B_BUSY | B_CMD | B_RAW;
+ bp->b_flags = B_BUSY | B_CMD;
mtstrategy(bp);
biowait(bp);
if (bp->b_flags & B_ERROR) {
diff --git a/sys/arch/hp300/hp300/disksubr.c b/sys/arch/hp300/hp300/disksubr.c
index 0f440c2a2a0..1c5a1480879 100644
--- a/sys/arch/hp300/hp300/disksubr.c
+++ b/sys/arch/hp300/hp300/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.42 2008/06/10 20:50:22 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.43 2008/06/11 12:35:41 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.9 1997/04/01 03:12:13 scottr Exp $ */
/*
@@ -68,7 +68,7 @@ readdisklabel(dev_t dev, void (*strat)(struct buf *),
bp->b_blkno = LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp)) {
msg = "disk label I/O error";
@@ -115,7 +115,7 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
bp->b_dev = dev;
bp->b_blkno = LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if ((error = biowait(bp)) != 0)
goto done;
@@ -123,7 +123,7 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
/* Write it in the regular place. */
dlp = (struct disklabel *)(bp->b_data + LABELOFFSET);
*dlp = *lp;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/hppa/hppa/disksubr.c b/sys/arch/hppa/hppa/disksubr.c
index 430e505a7a9..cac0bc04b5f 100644
--- a/sys/arch/hppa/hppa/disksubr.c
+++ b/sys/arch/hppa/hppa/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.70 2008/06/10 20:50:22 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.71 2008/06/11 12:35:41 deraadt Exp $ */
/*
* Copyright (c) 1999 Michael Shalayeff
@@ -107,7 +107,7 @@ readliflabel(struct buf *bp, void (*strat)(struct buf *),
/* read LIF volume header */
bp->b_blkno = btodb(LIF_VOLSTART);
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp))
return "LIF volume header I/O error";
@@ -122,7 +122,7 @@ readliflabel(struct buf *bp, void (*strat)(struct buf *),
/* read LIF directory */
dbp->b_blkno = lifstodb(lvp->vol_addr);
dbp->b_bcount = lp->d_secsize;
- dbp->b_flags = B_BUSY | B_READ | B_RAW;
+ dbp->b_flags = B_BUSY | B_READ;
(*strat)(dbp);
if (biowait(dbp)) {
@@ -154,7 +154,7 @@ readliflabel(struct buf *bp, void (*strat)(struct buf *),
/* read LIF directory */
dbp->b_blkno = lifstodb(p->dir_addr);
dbp->b_bcount = lp->d_secsize;
- dbp->b_flags = B_BUSY | B_READ | B_RAW;
+ dbp->b_flags = B_BUSY | B_READ;
(*strat)(dbp);
if (biowait(dbp)) {
@@ -218,7 +218,7 @@ finished:
bp->b_blkno = fsoff + LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
/* if successful, locate disk label within block and validate */
@@ -258,14 +258,14 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
/* Read it in, slap the new label in, and write it back out */
bp->b_blkno = partoff + LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if ((error = biowait(bp)) != 0)
goto done;
dlp = (struct disklabel *)(bp->b_data + LABELOFFSET);
*dlp = *lp;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/hppa64/hppa64/disksubr.c b/sys/arch/hppa64/hppa64/disksubr.c
index 5670bd4cf11..8b72b8b47e2 100644
--- a/sys/arch/hppa64/hppa64/disksubr.c
+++ b/sys/arch/hppa64/hppa64/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.54 2008/06/10 20:50:22 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.55 2008/06/11 12:35:41 deraadt Exp $ */
/*
* Copyright (c) 1999 Michael Shalayeff
@@ -107,7 +107,7 @@ readliflabel(struct buf *bp, void (*strat)(struct buf *),
/* read LIF volume header */
bp->b_blkno = btodb(LIF_VOLSTART);
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp))
return "LIF volume header I/O error";
@@ -122,7 +122,7 @@ readliflabel(struct buf *bp, void (*strat)(struct buf *),
/* read LIF directory */
dbp->b_blkno = lifstodb(lvp->vol_addr);
dbp->b_bcount = lp->d_secsize;
- dbp->b_flags = B_BUSY | B_READ | B_RAW;
+ dbp->b_flags = B_BUSY | B_READ;
(*strat)(dbp);
if (biowait(dbp)) {
@@ -154,7 +154,7 @@ readliflabel(struct buf *bp, void (*strat)(struct buf *),
/* read LIF directory */
dbp->b_blkno = lifstodb(p->dir_addr);
dbp->b_bcount = lp->d_secsize;
- dbp->b_flags = B_BUSY | B_READ | B_RAW;
+ dbp->b_flags = B_BUSY | B_READ;
(*strat)(dbp);
if (biowait(dbp)) {
@@ -218,7 +218,7 @@ finished:
bp->b_blkno = fsoff + LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
/* if successful, locate disk label within block and validate */
@@ -258,14 +258,14 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
/* Read it in, slap the new label in, and write it back out */
bp->b_blkno = partoff + LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if ((error = biowait(bp)) != 0)
goto done;
dlp = (struct disklabel *)(bp->b_data + LABELOFFSET);
*dlp = *lp;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/i386/i386/disksubr.c b/sys/arch/i386/i386/disksubr.c
index 085fbe7386a..056b495327b 100644
--- a/sys/arch/i386/i386/disksubr.c
+++ b/sys/arch/i386/i386/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.95 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.96 2008/06/11 12:35:41 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */
/*
@@ -141,14 +141,14 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
/* Read it in, slap the new label in, and write it back out */
bp->b_blkno = partoff + LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if ((error = biowait(bp)) != 0)
goto done;
dlp = (struct disklabel *)(bp->b_data + LABELOFFSET);
*dlp = *lp;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/i386/i386/dkcsum.c b/sys/arch/i386/i386/dkcsum.c
index f0b553864e5..0305da7e7eb 100644
--- a/sys/arch/i386/i386/dkcsum.c
+++ b/sys/arch/i386/i386/dkcsum.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dkcsum.c,v 1.23 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: dkcsum.c,v 1.24 2008/06/11 12:35:41 deraadt Exp $ */
/*-
* Copyright (c) 1997 Niklas Hallqvist. All rights reserved.
@@ -106,7 +106,7 @@ dkcsumattach(void)
/* Read blocks to cksum. XXX maybe a d_read should be used. */
bp->b_blkno = 0;
bp->b_bcount = bios_cksumlen * DEV_BSIZE;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
bp->b_cylinder = 0;
(*bdsw->d_strategy)(bp);
if ((error = biowait(bp))) {
diff --git a/sys/arch/landisk/landisk/disksubr.c b/sys/arch/landisk/landisk/disksubr.c
index ff32a6f63b1..4e5a626b540 100644
--- a/sys/arch/landisk/landisk/disksubr.c
+++ b/sys/arch/landisk/landisk/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.37 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.38 2008/06/11 12:35:42 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */
/*
@@ -114,14 +114,14 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
/* Read it in, slap the new label in, and write it back out */
bp->b_blkno = partoff + LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if ((error = biowait(bp)) != 0)
goto done;
dlp = (struct disklabel *)(bp->b_data + LABELOFFSET);
*dlp = *lp;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/luna88k/luna88k/disksubr.c b/sys/arch/luna88k/luna88k/disksubr.c
index fcc4ac7c628..8f513a3263c 100644
--- a/sys/arch/luna88k/luna88k/disksubr.c
+++ b/sys/arch/luna88k/luna88k/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.34 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.35 2008/06/11 12:35:42 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.12 2002/02/19 17:09:44 wiz Exp $ */
/*
@@ -124,7 +124,7 @@ readdisklabel(dev_t dev, void (*strat)(struct buf *),
bp->b_blkno = LABELSECTOR;
bp->b_cylinder = 0;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp)) {
msg = "disk label read error";
@@ -179,7 +179,7 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
bp->b_blkno = LABELSECTOR;
bp->b_cylinder = 0;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
error = biowait(bp);
@@ -191,7 +191,7 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
if (error)
goto done;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/mac68k/mac68k/disksubr.c b/sys/arch/mac68k/mac68k/disksubr.c
index 68f06f95f90..60913ad8c13 100644
--- a/sys/arch/mac68k/mac68k/disksubr.c
+++ b/sys/arch/mac68k/mac68k/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.53 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.54 2008/06/11 12:35:42 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.22 1997/11/26 04:18:20 briggs Exp $ */
/*
@@ -349,7 +349,7 @@ readdisklabel(dev_t dev, void (*strat)(struct buf *),
bp->b_blkno = LABELSECTOR;
bp->b_bcount = size;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp)) {
msg = "disk label I/O error";
@@ -366,7 +366,7 @@ readdisklabel(dev_t dev, void (*strat)(struct buf *),
/* Get a MI label */
bp->b_blkno = LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp)) {
msg = "disk label I/O error";
@@ -423,7 +423,7 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
bp->b_blkno = LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if ((error = biowait(bp)) != 0)
goto done;
@@ -437,7 +437,7 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
dlp = (struct disklabel *)(bp->b_data + LABELOFFSET);
*dlp = *lp;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/macppc/macppc/disksubr.c b/sys/arch/macppc/macppc/disksubr.c
index c3312650d39..3d0cddf00da 100644
--- a/sys/arch/macppc/macppc/disksubr.c
+++ b/sys/arch/macppc/macppc/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.58 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.59 2008/06/11 12:35:42 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */
/*
@@ -111,7 +111,7 @@ readdpmelabel(struct buf *bp, void (*strat)(struct buf *),
/* First check for a DPME (HFS) disklabel */
bp->b_blkno = 1;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp))
return ("DPME partition I/O error");
@@ -129,7 +129,7 @@ readdpmelabel(struct buf *bp, void (*strat)(struct buf *),
bp->b_blkno = 1+i;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp))
return ("DPME partition I/O error");
@@ -165,7 +165,7 @@ readdpmelabel(struct buf *bp, void (*strat)(struct buf *),
/* next, dig out disk label */
bp->b_blkno = hfspartoff + LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp))
return("disk label I/O error");
@@ -194,14 +194,14 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
/* Read it in, slap the new label in, and write it back out */
bp->b_blkno = partoff + LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if ((error = biowait(bp)) != 0)
goto done;
dlp = (struct disklabel *)(bp->b_data + LABELOFFSET);
*dlp = *lp;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/mvme68k/mvme68k/disksubr.c b/sys/arch/mvme68k/mvme68k/disksubr.c
index 8c1746e6b7f..bf4dc36761f 100644
--- a/sys/arch/mvme68k/mvme68k/disksubr.c
+++ b/sys/arch/mvme68k/mvme68k/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.61 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.62 2008/06/11 12:35:42 deraadt Exp $ */
/*
* Copyright (c) 1998 Steve Murphree, Jr.
* Copyright (c) 1995 Dale Rahn.
@@ -67,7 +67,7 @@ readdisklabel(dev_t dev, void (*strat)(struct buf *),
bp->b_blkno = LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
error = biowait(bp);
if (error) {
@@ -122,14 +122,14 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
bp->b_blkno = LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if ((error = biowait(bp)) != 0)
goto done;
bsdtocpulabel(lp, (struct mvmedisklabel *)bp->b_data);
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/mvme88k/mvme88k/disksubr.c b/sys/arch/mvme88k/mvme88k/disksubr.c
index adda564aaf1..0d8477b0a13 100644
--- a/sys/arch/mvme88k/mvme88k/disksubr.c
+++ b/sys/arch/mvme88k/mvme88k/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.57 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.58 2008/06/11 12:35:43 deraadt Exp $ */
/*
* Copyright (c) 1998 Steve Murphree, Jr.
* Copyright (c) 1995 Dale Rahn.
@@ -67,7 +67,7 @@ readdisklabel(dev_t dev, void (*strat)(struct buf *),
bp->b_blkno = LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
error = biowait(bp);
if (error) {
@@ -123,14 +123,14 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
/* Read it in, slap the new label in, and write it back out */
bp->b_blkno = LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if ((error = biowait(bp)) != 0)
goto done;
bsdtocpulabel(lp, (struct mvmedisklabel *)bp->b_data);
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/mvmeppc/mvmeppc/disksubr.c b/sys/arch/mvmeppc/mvmeppc/disksubr.c
index 4fa866a3473..16cf8c0a2ce 100644
--- a/sys/arch/mvmeppc/mvmeppc/disksubr.c
+++ b/sys/arch/mvmeppc/mvmeppc/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.55 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.56 2008/06/11 12:35:43 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */
/*
@@ -114,14 +114,14 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
/* Read it in, slap the new label in, and write it back out */
bp->b_blkno = partoff + LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if ((error = biowait(bp)) != 0)
goto done;
dlp = (struct disklabel *)(bp->b_data + LABELOFFSET);
*dlp = *lp;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/sgi/sgi/disksubr.c b/sys/arch/sgi/sgi/disksubr.c
index 6a68ec41127..ef7ef682b6f 100644
--- a/sys/arch/sgi/sgi/disksubr.c
+++ b/sys/arch/sgi/sgi/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.4 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.5 2008/06/11 12:35:43 deraadt Exp $ */
/*
* Copyright (c) 1999 Michael Shalayeff
@@ -59,7 +59,7 @@ readbsdlabel(struct buf *bp, void (*strat)(struct buf *),
bp->b_blkno = sec;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
/* if successful, locate disk label within block and validate */
@@ -145,7 +145,7 @@ readsgilabel(struct buf *bp, void (*strat)(struct buf *),
bp->b_blkno = 0;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
/* if successful, locate disk label within block and validate */
@@ -215,7 +215,7 @@ finished:
bp->b_blkno = fsoffs + LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp)) {
msg = "disk label I/O error";
@@ -249,14 +249,14 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
/* Read it in, slap the new label in, and write it back out */
bp->b_blkno = partoff + LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if ((error = biowait(bp)) != 0)
goto done;
dlp = (struct disklabel *)(bp->b_data + LABELOFFSET);
*dlp = *lp;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/socppc/socppc/disksubr.c b/sys/arch/socppc/socppc/disksubr.c
index 555a943cbe5..eee93504473 100644
--- a/sys/arch/socppc/socppc/disksubr.c
+++ b/sys/arch/socppc/socppc/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.2 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.3 2008/06/11 12:35:43 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */
/*
@@ -111,7 +111,7 @@ readdpmelabel(struct buf *bp, void (*strat)(struct buf *),
/* First check for a DPME (HFS) disklabel */
bp->b_blkno = 1;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp))
return ("DPME partition I/O error");
@@ -129,7 +129,7 @@ readdpmelabel(struct buf *bp, void (*strat)(struct buf *),
bp->b_blkno = 1+i;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp))
return ("DPME partition I/O error");
@@ -165,7 +165,7 @@ readdpmelabel(struct buf *bp, void (*strat)(struct buf *),
/* next, dig out disk label */
bp->b_blkno = hfspartoff + LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp))
return("disk label I/O error");
@@ -194,14 +194,14 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
/* Read it in, slap the new label in, and write it back out */
bp->b_blkno = partoff + LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if ((error = biowait(bp)) != 0)
goto done;
dlp = (struct disklabel *)(bp->b_data + LABELOFFSET);
*dlp = *lp;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/sparc/dev/fd.c b/sys/arch/sparc/dev/fd.c
index e5936b9ecb0..ae18fc2933b 100644
--- a/sys/arch/sparc/dev/fd.c
+++ b/sys/arch/sparc/dev/fd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: fd.c,v 1.59 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: fd.c,v 1.60 2008/06/11 12:35:43 deraadt Exp $ */
/* $NetBSD: fd.c,v 1.51 1997/05/24 20:16:19 pk Exp $ */
/*-
@@ -1911,7 +1911,7 @@ fdformat(dev, finfo, p)
if (bp == 0)
return (ENOBUFS);
- bp->b_flags = B_BUSY | B_PHYS | B_FORMAT | B_RAW;
+ bp->b_flags = B_BUSY | B_PHYS | B_FORMAT;
bp->b_proc = p;
bp->b_dev = dev;
diff --git a/sys/arch/sparc/sparc/disksubr.c b/sys/arch/sparc/sparc/disksubr.c
index ff125165eb4..e5f6d531917 100644
--- a/sys/arch/sparc/sparc/disksubr.c
+++ b/sys/arch/sparc/sparc/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.73 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.74 2008/06/11 12:35:43 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.16 1996/04/28 20:25:59 thorpej Exp $ */
/*
@@ -105,7 +105,7 @@ readdisklabel(dev_t dev, void (*strat)(struct buf *),
bp->b_blkno = LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp)) {
msg = "disk label read error";
@@ -169,7 +169,7 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
/* Write out the updated label. */
bp->b_blkno = LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/sparc64/dev/fd.c b/sys/arch/sparc64/dev/fd.c
index 03fcc61b4ef..8011833f26e 100644
--- a/sys/arch/sparc64/dev/fd.c
+++ b/sys/arch/sparc64/dev/fd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: fd.c,v 1.22 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: fd.c,v 1.23 2008/06/11 12:35:44 deraadt Exp $ */
/* $NetBSD: fd.c,v 1.112 2003/08/07 16:29:35 agc Exp $ */
/*-
@@ -1965,7 +1965,7 @@ fdformat(dev, finfo, p)
if (bp == NULL)
return (ENOBUFS);
- bp->b_flags = B_BUSY | B_PHYS | B_FORMAT | B_RAW;
+ bp->b_flags = B_BUSY | B_PHYS | B_FORMAT;
bp->b_proc = p;
bp->b_dev = dev;
diff --git a/sys/arch/sparc64/sparc64/disksubr.c b/sys/arch/sparc64/sparc64/disksubr.c
index 5023c1394af..8e45c71930c 100644
--- a/sys/arch/sparc64/sparc64/disksubr.c
+++ b/sys/arch/sparc64/sparc64/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.49 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.50 2008/06/11 12:35:44 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.13 2000/12/17 22:39:18 pk Exp $ */
/*
@@ -98,7 +98,7 @@ readdisklabel(dev_t dev, void (*strat)(struct buf *),
bp->b_blkno = LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp)) {
msg = "disk label read error";
@@ -162,7 +162,7 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
/* Write out the updated label. */
bp->b_blkno = LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/arch/vax/uba/ts.c b/sys/arch/vax/uba/ts.c
index e52e1d1a6f8..8b6160e9281 100644
--- a/sys/arch/vax/uba/ts.c
+++ b/sys/arch/vax/uba/ts.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ts.c,v 1.18 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: ts.c,v 1.19 2008/06/11 12:35:44 deraadt Exp $ */
/* $NetBSD: ts.c,v 1.11 1997/01/11 11:34:43 ragge Exp $ */
/*-
@@ -379,7 +379,7 @@ tscommand (dev, cmd, count)
tsleep ((caddr_t)bp, PRIBIO, "tscommand", 0);
/* check MOT-flag !!! */
}
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
splx(s);
diff --git a/sys/arch/vax/vax/disksubr.c b/sys/arch/vax/vax/disksubr.c
index 00192a55999..8b9c7f63693 100644
--- a/sys/arch/vax/vax/disksubr.c
+++ b/sys/arch/vax/vax/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.55 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: disksubr.c,v 1.56 2008/06/11 12:35:44 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.21 1999/06/30 18:48:06 ragge Exp $ */
/*
@@ -76,7 +76,7 @@ readdisklabel(dev_t dev, void (*strat)(struct buf *),
bp->b_blkno = LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp)) {
msg = "I/O error";
@@ -125,14 +125,14 @@ writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp)
/* Read it in, slap the new label in, and write it back out */
bp->b_blkno = LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if ((error = biowait(bp)) != 0)
goto done;
dlp = (struct disklabel *)(bp->b_data + LABELOFFSET);
*dlp = *lp;
- bp->b_flags = B_BUSY | B_WRITE | B_RAW;
+ bp->b_flags = B_BUSY | B_WRITE;
(*strat)(bp);
error = biowait(bp);
diff --git a/sys/conf/files b/sys/conf/files
index ce464781f75..5e3a667a38f 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -1,4 +1,4 @@
-# $OpenBSD: files,v 1.433 2008/06/10 20:14:36 beck Exp $
+# $OpenBSD: files,v 1.434 2008/06/11 12:35:44 deraadt Exp $
# $NetBSD: files,v 1.87 1996/05/19 17:17:50 jonathan Exp $
# @(#)files.newconf 7.5 (Berkeley) 5/10/93
@@ -707,7 +707,6 @@ file kern/uipc_socket2.c
file kern/uipc_syscalls.c
file kern/uipc_usrreq.c
file kern/vfs_bio.c
-file kern/vfs_biomem.c
file kern/vfs_cache.c
file kern/vfs_cluster.c
file kern/vfs_conf.c
diff --git a/sys/dev/isa/fd.c b/sys/dev/isa/fd.c
index f964b3fe02f..1c103718d3f 100644
--- a/sys/dev/isa/fd.c
+++ b/sys/dev/isa/fd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: fd.c,v 1.72 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: fd.c,v 1.73 2008/06/11 12:35:45 deraadt Exp $ */
/* $NetBSD: fd.c,v 1.90 1996/05/12 23:12:03 mycroft Exp $ */
/*-
@@ -1125,7 +1125,7 @@ fdformat(dev, finfo, p)
if (bp == NULL)
return ENOBUFS;
- bp->b_flags = B_BUSY | B_PHYS | B_FORMAT | B_RAW;
+ bp->b_flags = B_BUSY | B_PHYS | B_FORMAT;
bp->b_proc = p;
bp->b_dev = dev;
diff --git a/sys/isofs/udf/udf_subr.c b/sys/isofs/udf/udf_subr.c
index 8ce51fa34f9..87ef5367e74 100644
--- a/sys/isofs/udf/udf_subr.c
+++ b/sys/isofs/udf/udf_subr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: udf_subr.c,v 1.15 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: udf_subr.c,v 1.16 2008/06/11 12:35:46 deraadt Exp $ */
/*
* Copyright (c) 2006, Miodrag Vallat
@@ -110,7 +110,7 @@ udf_disklabelspoof(dev_t dev, void (*strat)(struct buf *),
*/
bp->b_blkno = sector * btodb(bsize);
bp->b_bcount = bsize;
- bp->b_flags |= (B_READ | B_RAW);
+ bp->b_flags = B_BUSY | B_READ;
bp->b_resid = bp->b_blkno / lp->d_secpercyl;
(*strat)(bp);
@@ -130,7 +130,7 @@ udf_disklabelspoof(dev_t dev, void (*strat)(struct buf *),
for (sector = mvds_start; sector < mvds_end; sector++) {
bp->b_blkno = sector * btodb(bsize);
bp->b_bcount = bsize;
- bp->b_flags |= (B_READ | B_RAW);
+ bp->b_flags = B_BUSY | B_READ;
bp->b_resid = bp->b_blkno / lp->d_secpercyl;
(*strat)(bp);
diff --git a/sys/kern/kern_sched.c b/sys/kern/kern_sched.c
index 0759e01f2b8..1aa25f464a9 100644
--- a/sys/kern/kern_sched.c
+++ b/sys/kern/kern_sched.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kern_sched.c,v 1.4 2008/06/10 20:14:36 beck Exp $ */
+/* $OpenBSD: kern_sched.c,v 1.5 2008/06/11 12:35:46 deraadt Exp $ */
/*
* Copyright (c) 2007 Artur Grabowski <art@openbsd.org>
*
@@ -113,8 +113,6 @@ sched_idle(void *v)
}
}
- splassert(IPL_NONE);
-
cpu_idle_enter();
while (sched_is_idle())
cpu_idle_cycle();
diff --git a/sys/kern/spec_vnops.c b/sys/kern/spec_vnops.c
index 3af4f6c1a10..15c2bd86377 100644
--- a/sys/kern/spec_vnops.c
+++ b/sys/kern/spec_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: spec_vnops.c,v 1.50 2008/06/10 20:14:36 beck Exp $ */
+/* $OpenBSD: spec_vnops.c,v 1.51 2008/06/11 12:35:46 deraadt Exp $ */
/* $NetBSD: spec_vnops.c,v 1.29 1996/04/22 01:42:38 christos Exp $ */
/*
@@ -447,7 +447,7 @@ loop:
if ((bp->b_flags & B_DELWRI) == 0)
panic("spec_fsync: not dirty");
bremfree(bp);
- buf_acquire(bp);
+ bp->b_flags |= B_BUSY;
splx(s);
bawrite(bp);
goto loop;
diff --git a/sys/kern/subr_disk.c b/sys/kern/subr_disk.c
index cfa60f25b41..d4db8e2e299 100644
--- a/sys/kern/subr_disk.c
+++ b/sys/kern/subr_disk.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: subr_disk.c,v 1.76 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: subr_disk.c,v 1.77 2008/06/11 12:35:46 deraadt Exp $ */
/* $NetBSD: subr_disk.c,v 1.17 1996/03/16 23:17:08 christos Exp $ */
/*
@@ -399,7 +399,7 @@ readdoslabel(struct buf *bp, void (*strat)(struct buf *),
/* read boot record */
bp->b_blkno = part_blkno;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp)) {
/*wrong*/ if (partoffp)
@@ -542,7 +542,7 @@ notfat:
bp->b_blkno = dospartoff + DOS_LABELSECTOR;
bp->b_bcount = lp->d_secsize;
- bp->b_flags = B_BUSY | B_READ | B_RAW;
+ bp->b_flags = B_BUSY | B_READ;
(*strat)(bp);
if (biowait(bp))
return ("disk label I/O error");
diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c
index f44253ef163..11c450fc982 100644
--- a/sys/kern/vfs_bio.c
+++ b/sys/kern/vfs_bio.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vfs_bio.c,v 1.104 2008/06/10 20:14:36 beck Exp $ */
+/* $OpenBSD: vfs_bio.c,v 1.105 2008/06/11 12:35:46 deraadt Exp $ */
/* $NetBSD: vfs_bio.c,v 1.44 1996/06/11 11:15:36 pk Exp $ */
/*-
@@ -78,12 +78,14 @@ u_long bufhash;
/*
* Definitions for the buffer free lists.
*/
-#define BQUEUES 2 /* number of free buffer queues */
+#define BQUEUES 6 /* number of free buffer queues */
#define BQ_DIRTY 0 /* LRU queue with dirty buffers */
-#define BQ_CLEAN 1 /* LRU queue with clean buffers */
+
TAILQ_HEAD(bqueues, buf) bufqueues[BQUEUES];
+int bqpages[BQUEUES]; /* pages allocated, per queue */
+int bqpagelow;
int needbuffer;
struct bio_ops bioops;
@@ -91,6 +93,7 @@ struct bio_ops bioops;
* Buffer pool for I/O buffers.
*/
struct pool bufpool;
+struct vm_map *buf_map;
struct bufhead bufhead = LIST_HEAD_INITIALIZER(bufhead);
struct buf *buf_get(size_t);
struct buf *buf_stub(struct vnode *, daddr64_t);
@@ -104,7 +107,7 @@ void buf_put(struct buf *);
struct buf *bio_doread(struct vnode *, daddr64_t, int, int);
struct buf *getnewbuf(size_t, int, int, int *);
-void buf_init(struct buf *);
+void buf_init(struct buf *, int);
void bread_cluster_callback(struct buf *);
/*
@@ -114,33 +117,54 @@ void bread_cluster_callback(struct buf *);
* numdirtypages - number of pages on BQ_DIRTY queue.
* lodirtypages - low water mark for buffer cleaning daemon.
* hidirtypages - high water mark for buffer cleaning daemon.
+ * numfreepages - number of pages on BQ_CLEAN and BQ_DIRTY queues. unused.
* numcleanpages - number of pages on BQ_CLEAN queue.
* Used to track the need to speedup the cleaner and
* as a reserve for special processes like syncer.
* maxcleanpages - the highest page count on BQ_CLEAN.
*/
-
-struct bcachestats bcstats;
+long numbufpages;
+long numdirtypages;
long lodirtypages;
long hidirtypages;
+long numfreepages;
+long numcleanpages;
long locleanpages;
long hicleanpages;
long maxcleanpages;
-/* XXX - should be defined here. */
-extern int bufcachepercent;
-
-vsize_t bufkvm;
-
struct proc *cleanerproc;
int bd_req; /* Sleep point for cleaner daemon. */
+int size2cqueue(int *size);
+
+int
+size2cqueue(int *size)
+{
+ int i = 0, q;
+ int s = *size;
+ s -= 1;
+ while (s > 0) {
+ s = s >> 1;
+ i++;
+ }
+ if (i < PAGE_SHIFT) {
+ i = PAGE_SHIFT; /* < 4096 -> 4096 */
+ }
+ *size = 1 << i;
+ q = (i + 1 - PAGE_SHIFT); /* XXX 4096 is queue 1 */
+ if (q >= BQUEUES)
+ panic("queue %d > BQUEUES %d", q, BQUEUES);
+ if (q == 0)
+ panic("can't return dirty q");
+ return(q);
+}
+
void
bremfree(struct buf *bp)
{
struct bqueues *dp = NULL;
-
- splassert(IPL_BIO);
+ int queue;
/*
* We only calculate the head of the freelist when removing
@@ -156,26 +180,38 @@ bremfree(struct buf *bp)
if (dp == &bufqueues[BQUEUES])
panic("bremfree: lost tail");
}
+ numfreepages -= atop(bp->b_bufsize);
if (!ISSET(bp->b_flags, B_DELWRI)) {
- bcstats.numcleanpages -= atop(bp->b_bufsize);
- } else {
- bcstats.numdirtypages -= atop(bp->b_bufsize);
- }
+ int qs = bp->b_bufsize;
+ queue = size2cqueue(&qs);
+ numcleanpages -= atop(bp->b_bufsize);
+ bqpages[queue] -= atop(bp->b_bufsize);
+ } else
+ numdirtypages -= atop(bp->b_bufsize);
TAILQ_REMOVE(dp, bp, b_freelist);
- bcstats.freebufs--;
}
void
-buf_init(struct buf *bp)
+buf_init(struct buf *bp, int size)
{
+ int npages, queue;
+
splassert(IPL_BIO);
+ npages = atop(size);
bzero((char *)bp, sizeof *bp);
bp->b_vnbufs.le_next = NOLIST;
bp->b_freelist.tqe_next = NOLIST;
bp->b_synctime = time_uptime + 300;
bp->b_dev = NODEV;
+ queue = size2cqueue(&size);
LIST_INIT(&bp->b_dep);
+ numbufpages += npages;
+ numfreepages += npages;
+ numcleanpages += npages;
+ bqpages[queue] += npages;
+ if (maxcleanpages < numcleanpages)
+ maxcleanpages = numcleanpages;
}
/*
@@ -202,7 +238,7 @@ buf_stub(struct vnode *vp, daddr64_t lblkno)
bp->b_dev = NODEV;
bp->b_bufsize = 0;
bp->b_data = NULL;
- bp->b_flags = 0;
+ bp->b_flags = B_BUSY;
bp->b_dev = NODEV;
bp->b_blkno = bp->b_lblkno = lblkno;
bp->b_iodone = NULL;
@@ -214,11 +250,8 @@ buf_stub(struct vnode *vp, daddr64_t lblkno)
LIST_INIT(&bp->b_dep);
- buf_acquire_unmapped(bp);
-
s = splbio();
LIST_INSERT_HEAD(&bufhead, bp, b_list);
- bcstats.numbufs++;
bgetvp(vp, bp);
splx(s);
@@ -228,31 +261,39 @@ buf_stub(struct vnode *vp, daddr64_t lblkno)
struct buf *
buf_get(size_t size)
{
+ struct bqueues *dp;
struct buf *bp;
int npages;
+ int queue, qs;
+ void *data;
splassert(IPL_BIO);
KASSERT(size > 0);
size = round_page(size);
- npages = atop(size);
+ qs = size;
+ queue = size2cqueue(&qs);
+ npages = atop(qs);
- if (bcstats.numbufpages + npages > bufpages)
+ if (numbufpages + npages > bufpages)
return (NULL);
bp = pool_get(&bufpool, PR_WAITOK);
- buf_init(bp);
+ data = (void *)uvm_km_alloc(buf_map, qs);
+ if (data == NULL) {
+ pool_put(&bufpool, bp);
+ return (NULL);
+ }
+ buf_init(bp, qs);
bp->b_flags = B_INVAL;
- buf_alloc_pages(bp, size);
- bp->b_data = NULL;
- binsheadfree(bp, &bufqueues[BQ_CLEAN]);
+ bp->b_bufsize = qs;
+ bp->b_data = data;
+ dp = &bufqueues[queue];
+ binsheadfree(bp, dp);
binshash(bp, &invalhash);
LIST_INSERT_HEAD(&bufhead, bp, b_list);
- bcstats.numbufs++;
- bcstats.freebufs++;
- bcstats.numcleanpages += atop(bp->b_bufsize);
return (bp);
}
@@ -262,7 +303,7 @@ buf_put(struct buf *bp)
{
splassert(IPL_BIO);
#ifdef DIAGNOSTIC
- if (bp->b_pobj != NULL)
+ if (bp->b_data != NULL)
KASSERT(bp->b_bufsize > 0);
#endif
#ifdef DIAGNOSTIC
@@ -279,10 +320,13 @@ buf_put(struct buf *bp)
panic("buf_put: b_dep is not empty");
#endif
LIST_REMOVE(bp, b_list);
- bcstats.numbufs--;
- if (buf_dealloc_mem(bp) != 0)
- return;
+ if (bp->b_data != NULL) {
+ bremhash(bp);
+ numbufpages -= atop(bp->b_bufsize);
+ uvm_km_free(buf_map, (vaddr_t)bp->b_data, bp->b_bufsize);
+ }
+
pool_put(&bufpool, bp);
}
@@ -292,56 +336,39 @@ buf_put(struct buf *bp)
void
bufinit(void)
{
+ vaddr_t minaddr, maxaddr;
struct bqueues *dp;
- /* XXX - for now */
- bufpages = bufcachepercent = bufkvm = 0;
-
- /*
- * If MD code doesn't say otherwise, use 10% of kvm for mappings and
- * 10% physmem for pages.
- */
- if (bufcachepercent == 0)
- bufcachepercent = 10;
- if (bufpages == 0)
- bufpages = physmem * bufcachepercent / 100;
-
- if (bufkvm == 0)
- bufkvm = (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) / 10;
-
- /*
- * Don't use more than twice the amount of bufpages for mappings.
- * It's twice since we map things sparsely.
- */
- if (bufkvm > bufpages * PAGE_SIZE)
- bufkvm = bufpages * PAGE_SIZE;
- /*
- * Round bufkvm to MAXPHYS because we allocate chunks of va space
- * in MAXPHYS chunks.
- */
- bufkvm &= ~(MAXPHYS - 1);
-
pool_init(&bufpool, sizeof(struct buf), 0, 0, 0, "bufpl", NULL);
pool_setipl(&bufpool, IPL_BIO);
for (dp = bufqueues; dp < &bufqueues[BQUEUES]; dp++)
TAILQ_INIT(dp);
+ minaddr = vm_map_min(kernel_map);
+ buf_map = uvm_km_suballoc(kernel_map, &minaddr, &maxaddr,
+ ptoa(bufpages), 0, FALSE, NULL);
- /*
- * hmm - bufkvm is an argument because it's static, while
- * bufpages is global because it can change while running.
- */
- buf_mem_init(bufkvm);
+ /*
+ * XXX don't starve any one queue below 5% of the total number
+ * of buffer cache pages.
+ */
+ bqpagelow = bufpages / 20;
bufhashtbl = hashinit(bufpages / 4, M_CACHE, M_WAITOK, &bufhash);
hidirtypages = (bufpages / 4) * 3;
lodirtypages = bufpages / 2;
/*
- * When we hit 95% of pages being clean, we bring them down to
- * 90% to have some slack.
+ * Reserve 5% of bufpages for syncer's needs,
+ * but not more than 25% and if possible
+ * not less than 2 * MAXBSIZE. locleanpages
+ * value must be not too small
*/
- hicleanpages = bufpages - (bufpages / 20);
- locleanpages = bufpages - (bufpages / 10);
+ hicleanpages = bufpages / 2;
+ locleanpages = hicleanpages / 2;
+ if (locleanpages < atop(2 * MAXBSIZE))
+ locleanpages = atop(2 * MAXBSIZE);
+ if (locleanpages > bufpages / 4)
+ locleanpages = bufpages / 4;
maxcleanpages = locleanpages;
}
@@ -361,9 +388,8 @@ bio_doread(struct vnode *vp, daddr64_t blkno, int size, int async)
*/
if (!ISSET(bp->b_flags, (B_DONE | B_DELWRI))) {
SET(bp->b_flags, B_READ | async);
- bcstats.pendingreads++;
- bcstats.numreads++;
VOP_STRATEGY(bp);
+
/* Pay for the read. */
curproc->p_stats->p_ru.ru_inblock++; /* XXX */
} else if (async) {
@@ -451,7 +477,7 @@ bread_cluster_callback(struct buf *bp)
}
free(xbpp, M_TEMP);
- bp->b_pobj = NULL;
+ bp->b_data = NULL;
buf_put(bp);
}
@@ -459,8 +485,9 @@ int
bread_cluster(struct vnode *vp, daddr64_t blkno, int size, struct buf **rbpp)
{
struct buf *bp, **xbpp;
- int howmany, maxra, i, inc;
+ int howmany, i, maxra, inc;
daddr64_t sblkno;
+ size_t spill;
*rbpp = bio_doread(vp, blkno, size, 0);
@@ -517,16 +544,11 @@ bread_cluster(struct vnode *vp, daddr64_t blkno, int size, struct buf **rbpp)
inc = btodb(size);
for (i = 0; i < howmany; i++) {
- bcstats.pendingreads++;
- bcstats.numreads++;
SET(xbpp[i]->b_flags, B_READ | B_ASYNC);
binshash(xbpp[i], BUFHASH(vp, xbpp[i]->b_lblkno));
xbpp[i]->b_blkno = sblkno + (i * inc);
xbpp[i]->b_bufsize = xbpp[i]->b_bcount = size;
- xbpp[i]->b_data = NULL;
- xbpp[i]->b_pobj = bp->b_pobj;
- xbpp[i]->b_poffs = bp->b_poffs + (i * size);
- buf_acquire_unmapped(xbpp[i]);
+ xbpp[i]->b_data = bp->b_data + (i * size);
}
bp->b_blkno = sblkno;
@@ -535,8 +557,12 @@ bread_cluster(struct vnode *vp, daddr64_t blkno, int size, struct buf **rbpp)
bp->b_saveaddr = (void *)xbpp;
bp->b_iodone = bread_cluster_callback;
bp->b_vp = vp;
- bcstats.pendingreads++;
- bcstats.numreads++;
+ spill = bp->b_bufsize - bp->b_bcount;
+ if (spill) {
+ uvm_km_free(buf_map, (vaddr_t) bp->b_data + bp->b_bcount,
+ spill);
+ numbufpages -= atop(spill);
+ }
VOP_STRATEGY(bp);
curproc->p_stats->p_ru.ru_inblock++;
@@ -583,8 +609,6 @@ bwrite(struct buf *bp)
else
mp->mnt_stat.f_syncwrites++;
}
- bcstats.pendingwrites++;
- bcstats.numwrites++;
wasdelayed = ISSET(bp->b_flags, B_DELWRI);
CLR(bp->b_flags, (B_READ | B_DONE | B_ERROR | B_DELWRI));
@@ -699,11 +723,6 @@ buf_dirty(struct buf *bp)
{
splassert(IPL_BIO);
-#ifdef DIAGNOSTIC
- if (!ISSET(bp->b_flags, B_BUSY))
- panic("Trying to dirty buffer on freelist!");
-#endif
-
if (ISSET(bp->b_flags, B_DELWRI) == 0) {
SET(bp->b_flags, B_DELWRI);
bp->b_synctime = time_uptime + 35;
@@ -719,10 +738,6 @@ buf_undirty(struct buf *bp)
{
splassert(IPL_BIO);
-#ifdef DIAGNOSTIC
- if (!ISSET(bp->b_flags, B_BUSY))
- panic("Trying to undirty buffer on freelist!");
-#endif
if (ISSET(bp->b_flags, B_DELWRI)) {
CLR(bp->b_flags, B_DELWRI);
reassignbuf(bp);
@@ -754,6 +769,8 @@ brelse(struct buf *bp)
SET(bp->b_flags, B_INVAL);
if (ISSET(bp->b_flags, B_INVAL)) {
+ int queue, qs;
+
/*
* If the buffer is invalid, place it in the clean queue, so it
* can be reused.
@@ -772,29 +789,37 @@ brelse(struct buf *bp)
* If the buffer has no associated data, place it back in the
* pool.
*/
- if (bp->b_data == NULL && bp->b_pobj == NULL) {
+ if (bp->b_data == NULL) {
buf_put(bp);
splx(s);
return;
}
- bcstats.numcleanpages += atop(bp->b_bufsize);
- if (maxcleanpages < bcstats.numcleanpages)
- maxcleanpages = bcstats.numcleanpages;
- binsheadfree(bp, &bufqueues[BQ_CLEAN]);
+ qs = bp->b_bufsize;
+ queue = size2cqueue(&qs);
+ numcleanpages += atop(bp->b_bufsize);
+ bqpages[queue] += atop(bp->b_bufsize);
+ if (maxcleanpages < numcleanpages)
+ maxcleanpages = numcleanpages;
+ binsheadfree(bp, &bufqueues[queue]);
} else {
/*
* It has valid data. Put it on the end of the appropriate
* queue, so that it'll stick around for as long as possible.
*/
+ int queue, qs;
+ numfreepages += atop(bp->b_bufsize);
+ qs = bp->b_bufsize;
+ queue = size2cqueue(&qs);
if (!ISSET(bp->b_flags, B_DELWRI)) {
- bcstats.numcleanpages += atop(bp->b_bufsize);
- if (maxcleanpages < bcstats.numcleanpages)
- maxcleanpages = bcstats.numcleanpages;
- bufq = &bufqueues[BQ_CLEAN];
+ numcleanpages += atop(bp->b_bufsize);
+ bqpages[queue] += atop(bp->b_bufsize);
+ if (maxcleanpages < numcleanpages)
+ maxcleanpages = numcleanpages;
+ bufq = &bufqueues[queue];
} else {
- bcstats.numdirtypages += atop(bp->b_bufsize);
+ numdirtypages += atop(bp->b_bufsize);
bufq = &bufqueues[BQ_DIRTY];
}
if (ISSET(bp->b_flags, B_AGE)) {
@@ -807,9 +832,7 @@ brelse(struct buf *bp)
}
/* Unlock the buffer. */
- bcstats.freebufs++;
- CLR(bp->b_flags, (B_AGE | B_ASYNC | B_NOCACHE | B_DEFERRED));
- buf_release(bp);
+ CLR(bp->b_flags, (B_AGE | B_ASYNC | B_BUSY | B_NOCACHE | B_DEFERRED));
/* Wake up any processes waiting for any buffer to become free. */
if (needbuffer) {
@@ -894,10 +917,8 @@ start:
}
if (!ISSET(bp->b_flags, B_INVAL)) {
- bcstats.cachehits++;
+ SET(bp->b_flags, (B_BUSY | B_CACHE));
bremfree(bp);
- SET(bp->b_flags, B_CACHE);
- buf_acquire(bp);
splx(s);
break;
}
@@ -925,10 +946,6 @@ start:
bgetvp(vp, bp);
splx(s);
}
-#ifdef DIAGNOSTIC
- if (!ISSET(bp->b_flags, B_BUSY))
- panic("getblk buffer not B_BUSY");
-#endif
return (bp);
}
@@ -955,7 +972,7 @@ struct buf *
getnewbuf(size_t size, int slpflag, int slptimeo, int *ep)
{
struct buf *bp;
- int s;
+ int s, error, queue, qs;
#if 0 /* we would really like this but sblock update kills it */
KASSERT(curproc != syncerproc && curproc != cleanerproc);
@@ -965,47 +982,72 @@ getnewbuf(size_t size, int slpflag, int slptimeo, int *ep)
/*
* Wake up cleaner if we're getting low on pages.
*/
- if (bcstats.numdirtypages >= hidirtypages || bcstats.numcleanpages <= locleanpages)
+ if (numdirtypages >= hidirtypages || numcleanpages <= locleanpages)
wakeup(&bd_req);
- /*
- * If we're above the high water mark for clean pages,
- * free down to the low water mark.
- */
- if (bcstats.numcleanpages > hicleanpages) {
- while (bcstats.numcleanpages > locleanpages) {
- bp = TAILQ_FIRST(&bufqueues[BQ_CLEAN]);
- bremfree(bp);
- if (bp->b_vp)
- brelvp(bp);
- bremhash(bp);
- buf_put(bp);
- }
- }
-
/* we just ask. it can say no.. */
getsome:
- bp = buf_get(size);
+ qs = size;
+ queue = size2cqueue(&qs);
+ bp = buf_get(qs); /* XXX use qs instead and no need in buf_get? */
if (bp == NULL) {
- int freemax = 5;
- int i = freemax;
- while ((bp = TAILQ_FIRST(&bufqueues[BQ_CLEAN])) && i--) {
- bremfree(bp);
- if (bp->b_vp)
- brelvp(bp);
- bremhash(bp);
- buf_put(bp);
+ /*
+ * No free ones, try to reuse a clean one of the same or
+ * larger size.
+ */
+ do {
+ bp = TAILQ_FIRST(&bufqueues[queue]);
+ queue++;
+ } while (bp == NULL && queue < BQUEUES);
+ }
+ if (bp == NULL) {
+ /* we couldn't reuse a free one, nothing of the right size */
+ /* XXX free 20 buffers per q - ugly hack should really
+ * reuse big ones without truncating. fix later
+ */
+ int q, gotsome = 0;
+ int freemax = 20;
+ for (q = 1; q < BQUEUES; q++) {
+ int i = freemax;
+ while (bqpages[q] > bqpagelow
+ && (bp = TAILQ_FIRST(&bufqueues[q]))
+ && i--) {
+ gotsome++;
+ bremfree(bp);
+ if (LIST_FIRST(&bp->b_dep) != NULL)
+ buf_deallocate(bp);
+
+ if (ISSET(bp->b_flags, B_DELWRI)) {
+ CLR(bp->b_flags, B_DELWRI);
+ }
+
+ if (bp->b_vp)
+ brelvp(bp);
+
+ buf_put(bp);
+ }
}
- if (freemax != i)
+ if (gotsome)
goto getsome;
- splx(s);
- return (NULL);
+ }
+ if (bp == NULL) {
+ /* wait for a free buffer of any kind */
+ needbuffer++;
+ error = tsleep(&needbuffer, slpflag | (PRIBIO + 1),
+ "getnewbuf", slptimeo);
+ if (ep != NULL) {
+ *ep = error;
+ if (error) {
+ splx(s);
+ return (NULL);
+ }
+ }
+ goto getsome;
}
bremfree(bp);
/* Buffer is no longer on free lists. */
- bp->b_flags = 0;
- buf_acquire(bp);
+ SET(bp->b_flags, B_BUSY);
#ifdef DIAGNOSTIC
if (ISSET(bp->b_flags, B_DELWRI))
@@ -1025,6 +1067,7 @@ getsome:
#endif
/* clear out various other fields */
+ bp->b_flags = B_BUSY;
bp->b_dev = NODEV;
bp->b_blkno = bp->b_lblkno = 0;
bp->b_iodone = NULL;
@@ -1052,7 +1095,8 @@ buf_daemon(struct proc *p)
s = splbio();
for (;;) {
- if (bcstats.numdirtypages < hidirtypages)
+ if (!numdirtypages ||
+ (numdirtypages < hidirtypages && !needbuffer))
tsleep(&bd_req, PRIBIO - 7, "cleaner", 0);
getmicrouptime(&starttime);
@@ -1060,11 +1104,11 @@ buf_daemon(struct proc *p)
while ((bp = TAILQ_FIRST(&bufqueues[BQ_DIRTY]))) {
struct timeval tv;
- if (bcstats.numdirtypages < lodirtypages)
+ if (numdirtypages < lodirtypages && !needbuffer)
break;
bremfree(bp);
- buf_acquire(bp);
+ SET(bp->b_flags, B_BUSY);
splx(s);
if (ISSET(bp->b_flags, B_INVAL)) {
@@ -1081,10 +1125,10 @@ buf_daemon(struct proc *p)
buf_countdeps(bp, 0, 0)) {
SET(bp->b_flags, B_DEFERRED);
s = splbio();
- bcstats.numdirtypages += atop(bp->b_bufsize);
+ numfreepages += atop(bp->b_bufsize);
+ numdirtypages += atop(bp->b_bufsize);
binstailfree(bp, &bufqueues[BQ_DIRTY]);
- bcstats.freebufs++;
- buf_release(bp);
+ CLR(bp->b_flags, B_BUSY);
continue;
}
@@ -1110,8 +1154,6 @@ biowait(struct buf *bp)
{
int s;
- KASSERT(!(bp->b_flags & B_ASYNC));
-
s = splbio();
while (!ISSET(bp->b_flags, B_DONE))
tsleep(bp, PRIBIO + 1, "biowait", 0);
@@ -1161,11 +1203,8 @@ biodone(struct buf *bp)
if (!ISSET(bp->b_flags, B_READ)) {
CLR(bp->b_flags, B_WRITEINPROG);
- bcstats.pendingwrites--;
vwakeup(bp->b_vp);
- } else if (bcstats.numbufs &&
- (!(ISSET(bp->b_flags, B_RAW) || ISSET(bp->b_flags, B_PHYS))))
- bcstats.pendingreads--;
+ }
if (ISSET(bp->b_flags, B_CALL)) { /* if necessary, call out */
CLR(bp->b_flags, B_CALL); /* but note callout done */
@@ -1179,3 +1218,66 @@ biodone(struct buf *bp)
}
}
}
+
+#if 1
+void
+vfs_bufstats(void) {
+ return;
+}
+/* #ifdef DDB */
+#else
+/*
+ * Print out statistics on the current allocation of the buffer pool.
+ * Can be enabled to print out on every ``sync'' by setting "syncprt"
+ * in vfs_syscalls.c using sysctl.
+ */
+void
+vfs_bufstats(void)
+{
+ int s, i, j, count;
+ struct buf *bp;
+ struct bqueues *dp;
+ int counts[MAXBSIZE/PAGE_SIZE+1];
+ int totals[BQUEUES];
+ long ptotals[BQUEUES];
+ long pages;
+ static char *bname[BQUEUES] = { "CLEAN", "DIRTY", "EMPTY" };
+
+ s = splbio();
+ for (dp = bufqueues, i = 0; dp < &bufqueues[BQUEUES]; dp++, i++) {
+ count = 0;
+ pages = 0;
+ for (j = 0; j <= MAXBSIZE/PAGE_SIZE; j++)
+ counts[j] = 0;
+ TAILQ_FOREACH(bp, dp, b_freelist) {
+ counts[bp->b_bufsize/PAGE_SIZE]++;
+ count++;
+ pages += atop(bp->b_bufsize);
+ }
+ totals[i] = count;
+ ptotals[i] = pages;
+ printf("%s: total-%d(%d pages)", bname[i], count, pages);
+ for (j = 0; j <= MAXBSIZE/PAGE_SIZE; j++)
+ if (counts[j] != 0)
+ printf(", %d-%d", j * PAGE_SIZE, counts[j]);
+ printf("\n");
+ }
+ if ((ptotals[BQ_CLEAN] + ptotals[BQ_DIRTY]) != numfreepages)
+ printf("numfreepages counter wrong: %ld != %ld\n",
+ numfreepages, ptotals[BQ_CLEAN] + ptotals[BQ_DIRTY]);
+ if (ptotals[BQ_CLEAN] != numcleanpages)
+ printf("numcleanpages counter wrong: %ld != %ld\n",
+ numcleanpages, ptotals[<BQ_CLEAN]);
+ else
+ printf("numcleanpages: %ld\n", numcleanpages);
+ if (numdirtypages != ptotals[BQ_DIRTY])
+ printf("numdirtypages counter wrong: %ld != %ld\n",
+ numdirtypages, ptotals[BQ_DIRTY]);
+ else
+ printf("numdirtypages: %ld\n", numdirtypages);
+
+ printf("syncer eating up to %ld pages from %ld reserved\n",
+ maxcleanpages - hicleanpages, locleanpages);
+ splx(s);
+}
+#endif /* DEBUG */
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 65153b0cdfc..b55c0242c8b 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vfs_subr.c,v 1.168 2008/06/10 20:14:36 beck Exp $ */
+/* $OpenBSD: vfs_subr.c,v 1.169 2008/06/11 12:35:46 deraadt Exp $ */
/* $NetBSD: vfs_subr.c,v 1.53 1996/04/22 01:39:13 christos Exp $ */
/*
@@ -120,7 +120,7 @@ void
vntblinit(void)
{
/* buffer cache may need a vnode for each buffer */
- maxvnodes = bufpages;
+ maxvnodes = desiredvnodes;
pool_init(&vnode_pool, sizeof(struct vnode), 0, 0, 0, "vnodes",
&pool_allocator_nointr);
TAILQ_INIT(&vnode_hold_list);
@@ -1256,12 +1256,8 @@ vfs_sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, void *newp,
free(tmpvfsp, M_TEMP);
return (ret);
- case VFS_BCACHESTAT: /* buffer cache statistics */
- ret = sysctl_rdstruct(oldp, oldlenp, newp, &bcstats,
- sizeof(struct bcachestats));
- return(ret);
-
}
+
return (EOPNOTSUPP);
}
@@ -1668,7 +1664,7 @@ vfs_syncwait(int verbose)
if (bp->b_flags & B_DELWRI) {
s = splbio();
bremfree(bp);
- buf_acquire(bp);
+ bp->b_flags |= B_BUSY;
splx(s);
nbusy++;
bawrite(bp);
@@ -1839,7 +1835,7 @@ loop:
break;
}
bremfree(bp);
- buf_acquire(bp);
+ bp->b_flags |= B_BUSY;
/*
* XXX Since there are no node locks for NFS, I believe
* there is a slight chance that a delayed write will
@@ -1877,7 +1873,7 @@ loop:
if ((bp->b_flags & B_DELWRI) == 0)
panic("vflushbuf: not dirty");
bremfree(bp);
- buf_acquire(bp);
+ bp->b_flags |= B_BUSY;
splx(s);
/*
* Wait for I/O associated with indirect blocks to complete,
diff --git a/sys/miscfs/specfs/spec_vnops.c b/sys/miscfs/specfs/spec_vnops.c
index 3af4f6c1a10..15c2bd86377 100644
--- a/sys/miscfs/specfs/spec_vnops.c
+++ b/sys/miscfs/specfs/spec_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: spec_vnops.c,v 1.50 2008/06/10 20:14:36 beck Exp $ */
+/* $OpenBSD: spec_vnops.c,v 1.51 2008/06/11 12:35:46 deraadt Exp $ */
/* $NetBSD: spec_vnops.c,v 1.29 1996/04/22 01:42:38 christos Exp $ */
/*
@@ -447,7 +447,7 @@ loop:
if ((bp->b_flags & B_DELWRI) == 0)
panic("spec_fsync: not dirty");
bremfree(bp);
- buf_acquire(bp);
+ bp->b_flags |= B_BUSY;
splx(s);
bawrite(bp);
goto loop;
diff --git a/sys/nfs/nfs_syscalls.c b/sys/nfs/nfs_syscalls.c
index caedf7bdc5c..c1ba30237c8 100644
--- a/sys/nfs/nfs_syscalls.c
+++ b/sys/nfs/nfs_syscalls.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: nfs_syscalls.c,v 1.62 2008/06/11 04:52:27 blambert Exp $ */
+/* $OpenBSD: nfs_syscalls.c,v 1.63 2008/06/11 12:35:46 deraadt Exp $ */
/* $NetBSD: nfs_syscalls.c,v 1.19 1996/02/18 11:53:52 fvdl Exp $ */
/*
@@ -746,8 +746,7 @@ nfssvc_iod(p)
(B_BUSY|B_DELWRI|B_NEEDCOMMIT|B_NOCACHE))!=B_DELWRI)
continue;
bremfree(nbp);
- nbp->b_flags |= B_ASYNC;
- buf_acquire(nbp);
+ nbp->b_flags |= (B_BUSY|B_ASYNC);
break;
}
/*
diff --git a/sys/nfs/nfs_vnops.c b/sys/nfs/nfs_vnops.c
index 189f16f1e2b..9fc77ab8095 100644
--- a/sys/nfs/nfs_vnops.c
+++ b/sys/nfs/nfs_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: nfs_vnops.c,v 1.87 2008/06/11 04:52:27 blambert Exp $ */
+/* $OpenBSD: nfs_vnops.c,v 1.88 2008/06/11 12:35:46 deraadt Exp $ */
/* $NetBSD: nfs_vnops.c,v 1.62.4.1 1996/07/08 20:26:52 jtc Exp $ */
/*
@@ -2736,8 +2736,7 @@ again:
!= (B_DELWRI | B_NEEDCOMMIT))
continue;
bremfree(bp);
- bp->b_flags |= B_WRITEINPROG;
- buf_acquire(bp);
+ bp->b_flags |= (B_BUSY | B_WRITEINPROG);
/*
* A list of these buffers is kept so that the
* second loop knows which buffers have actually
@@ -2815,12 +2814,10 @@ loop:
if ((passone || !commit) && (bp->b_flags & B_NEEDCOMMIT))
continue;
bremfree(bp);
- if (passone || !commit) {
- bp->b_flags |= B_ASYNC;
- } else {
- bp->b_flags |= (B_ASYNC|B_WRITEINPROG|B_NEEDCOMMIT);
- }
- buf_acquire(bp);
+ if (passone || !commit)
+ bp->b_flags |= (B_BUSY|B_ASYNC);
+ else
+ bp->b_flags |= (B_BUSY|B_ASYNC|B_WRITEINPROG|B_NEEDCOMMIT);
splx(s);
VOP_BWRITE(bp);
goto loop;
@@ -3016,8 +3013,6 @@ nfs_writebp(bp, force)
if (retv) {
if (force)
bp->b_flags |= B_WRITEINPROG;
- bcstats.pendingwrites++;
- bcstats.numwrites++;
VOP_STRATEGY(bp);
}
diff --git a/sys/sys/buf.h b/sys/sys/buf.h
index 50edefe61f4..59b696bf135 100644
--- a/sys/sys/buf.h
+++ b/sys/sys/buf.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: buf.h,v 1.58 2008/06/10 20:14:37 beck Exp $ */
+/* $OpenBSD: buf.h,v 1.59 2008/06/11 12:35:46 deraadt Exp $ */
/* $NetBSD: buf.h,v 1.25 1997/04/09 21:12:17 mycroft Exp $ */
/*
@@ -87,12 +87,6 @@ struct buf {
dev_t b_dev; /* Device associated with buffer. */
caddr_t b_data; /* associated data */
void *b_saveaddr; /* Original b_data for physio. */
-
- TAILQ_ENTRY(buf) b_valist; /* LRU of va to reuse. */
-
- struct uvm_object *b_pobj; /* Object containing the pages */
- off_t b_poffs; /* Offset within object */
-
daddr64_t b_lblkno; /* Logical block number. */
daddr64_t b_blkno; /* Underlying physical block number. */
/* Function to call upon completion.
@@ -167,8 +161,6 @@ struct buf *bufq_default_get(struct bufq *);
#define B_DEFERRED 0x04000000 /* Skipped over for cleaning */
#define B_SCANNED 0x08000000 /* Block already pushed during sync */
#define B_PDAEMON 0x10000000 /* I/O started by pagedaemon */
-#define B_RELEASED 0x20000000 /* free this buffer after its kvm */
-#define B_NOTMAPPED 0x40000000 /* BUSY, but not necessarily mapped */
#define B_BITS "\010\001AGE\002NEEDCOMMIT\003ASYNC\004BAD\005BUSY\006CACHE" \
"\007CALL\010DELWRI\012DONE\013EINTR\014ERROR" \
@@ -236,23 +228,6 @@ struct buf *getblk(struct vnode *, daddr64_t, int, int, int);
struct buf *geteblk(int);
struct buf *incore(struct vnode *, daddr64_t);
-/*
- * buf_kvm_init initializes the kvm handling for buffers.
- * buf_acquire sets the B_BUSY flag and ensures that the buffer is
- * mapped in the kvm.
- * buf_release clears the B_BUSY flag and allows the buffer to become
- * unmapped.
- * buf_unmap is for internal use only. Unmaps the buffer from kvm.
- */
-void buf_mem_init(vsize_t);
-void buf_acquire(struct buf *);
-void buf_acquire_unmapped(struct buf *);
-void buf_release(struct buf *);
-int buf_dealloc_mem(struct buf *);
-void buf_alloc_pages(struct buf *, vsize_t);
-void buf_free_pages(struct buf *);
-
-
void minphys(struct buf *bp);
int physio(void (*strategy)(struct buf *), struct buf *bp, dev_t dev,
int flags, void (*minphys)(struct buf *), struct uio *uio);
diff --git a/sys/sys/mount.h b/sys/sys/mount.h
index 64e01badfef..0e12cb233e7 100644
--- a/sys/sys/mount.h
+++ b/sys/sys/mount.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: mount.h,v 1.85 2008/06/10 20:14:37 beck Exp $ */
+/* $OpenBSD: mount.h,v 1.86 2008/06/11 12:35:46 deraadt Exp $ */
/* $NetBSD: mount.h,v 1.48 1996/02/18 11:55:47 fvdl Exp $ */
/*
@@ -465,13 +465,10 @@ struct mount {
#define VFS_MAXTYPENUM 1 /* int: highest defined filesystem type */
#define VFS_CONF 2 /* struct: vfsconf for filesystem given
as next argument */
-#define VFS_BCACHESTAT 3 /* struct: buffer cache statistics given
- as next argument */
#define CTL_VFSGENCTL_NAMES { \
{ 0, 0 }, \
{ "maxtypenum", CTLTYPE_INT }, \
- { "conf", CTLTYPE_NODE }, \
- { "bcachestat", CTLTYPE_STRUCT } \
+ { "conf", CTLTYPE_NODE } \
}
/*
@@ -488,24 +485,6 @@ struct vfsconf {
struct vfsconf *vfc_next; /* next in list */
};
-/* buffer cache statistics */
-struct bcachestats {
- long numbufs; /* number of buffers allocated */
- long freebufs; /* number of free buffers */
- long numbufpages; /* number of pages in buffer cache */
- long numfreepages; /* number of free pages */
- long numdirtypages; /* number of dirty free pages */
- long numcleanpages; /* number of clean free pages */
- long pendingwrites; /* number of pending writes */
- long pendingreads; /* number of pending reads */
- long numwrites; /* total writes started */
- long numreads; /* total reads started */
- long cachehits; /* total reads found in cache */
-};
-#ifdef _KERNEL
-extern struct bcachestats bcstats;
-#endif
-
/*
* Operations supported on mounted file system.
*/
diff --git a/sys/ufs/ext2fs/ext2fs_bmap.c b/sys/ufs/ext2fs/ext2fs_bmap.c
index 5de33f44a8f..1506fefffef 100644
--- a/sys/ufs/ext2fs/ext2fs_bmap.c
+++ b/sys/ufs/ext2fs/ext2fs_bmap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ext2fs_bmap.c,v 1.16 2008/06/10 20:14:37 beck Exp $ */
+/* $OpenBSD: ext2fs_bmap.c,v 1.17 2008/06/11 12:35:46 deraadt Exp $ */
/* $NetBSD: ext2fs_bmap.c,v 1.5 2000/03/30 12:41:11 augustss Exp $ */
/*
@@ -190,7 +190,6 @@ ext2fs_bmaparray(struct vnode *vp, int32_t bn, daddr64_t *bnp,
bp->b_flags |= B_READ;
VOP_STRATEGY(bp);
curproc->p_stats->p_ru.ru_inblock++; /* XXX */
- bcstats.pendingreads++;
if ((error = biowait(bp)) != 0) {
brelse(bp);
return (error);
diff --git a/sys/ufs/ext2fs/ext2fs_inode.c b/sys/ufs/ext2fs/ext2fs_inode.c
index a974b9f0874..f8cbb04f19d 100644
--- a/sys/ufs/ext2fs/ext2fs_inode.c
+++ b/sys/ufs/ext2fs/ext2fs_inode.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ext2fs_inode.c,v 1.40 2008/06/10 20:14:37 beck Exp $ */
+/* $OpenBSD: ext2fs_inode.c,v 1.41 2008/06/11 12:35:46 deraadt Exp $ */
/* $NetBSD: ext2fs_inode.c,v 1.24 2001/06/19 12:59:18 wiz Exp $ */
/*
@@ -466,8 +466,6 @@ ext2fs_indirtrunc(struct inode *ip, int32_t lbn, int32_t dbn, int32_t lastbn, in
bp = getblk(vp, lbn, (int)fs->e2fs_bsize, 0, 0);
if (!(bp->b_flags & (B_DONE | B_DELWRI))) {
curproc->p_stats->p_ru.ru_inblock++; /* pay for read */
- bcstats.pendingreads++;
- bcstats.numreads++;
bp->b_flags |= B_READ;
if (bp->b_bcount > bp->b_bufsize)
panic("ext2fs_indirtrunc: bad buffer size");
diff --git a/sys/ufs/ffs/ffs_inode.c b/sys/ufs/ffs/ffs_inode.c
index 4021a9da0fc..99594c39f93 100644
--- a/sys/ufs/ffs/ffs_inode.c
+++ b/sys/ufs/ffs/ffs_inode.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ffs_inode.c,v 1.53 2008/06/10 20:14:37 beck Exp $ */
+/* $OpenBSD: ffs_inode.c,v 1.54 2008/06/11 12:35:46 deraadt Exp $ */
/* $NetBSD: ffs_inode.c,v 1.10 1996/05/11 18:27:19 mycroft Exp $ */
/*
@@ -501,8 +501,6 @@ ffs_indirtrunc(struct inode *ip, daddr64_t lbn, daddr64_t dbn,
bp = getblk(vp, lbn, (int)fs->fs_bsize, 0, 0);
if (!(bp->b_flags & (B_DONE | B_DELWRI))) {
curproc->p_stats->p_ru.ru_inblock++; /* pay for read */
- bcstats.pendingreads++;
- bcstats.numreads++;
bp->b_flags |= B_READ;
if (bp->b_bcount > bp->b_bufsize)
panic("ffs_indirtrunc: bad buffer size");
diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c
index 8b74fef005e..e6fe34b1559 100644
--- a/sys/ufs/ffs/ffs_softdep.c
+++ b/sys/ufs/ffs/ffs_softdep.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ffs_softdep.c,v 1.95 2008/06/10 20:14:37 beck Exp $ */
+/* $OpenBSD: ffs_softdep.c,v 1.96 2008/06/11 12:35:46 deraadt Exp $ */
/*
* Copyright 1998, 2000 Marshall Kirk McKusick. All Rights Reserved.
@@ -4691,9 +4691,9 @@ softdep_fsync_mountdev(vp, waitfor)
/*
* If it is already scheduled, skip to the next buffer.
*/
- splassert(IPL_BIO);
if (bp->b_flags & B_BUSY)
continue;
+ bp->b_flags |= B_BUSY;
if ((bp->b_flags & B_DELWRI) == 0) {
FREE_LOCK(&lk);
@@ -4705,10 +4705,10 @@ softdep_fsync_mountdev(vp, waitfor)
*/
if ((wk = LIST_FIRST(&bp->b_dep)) == NULL ||
wk->wk_type != D_BMSAFEMAP) {
+ bp->b_flags &= ~B_BUSY;
continue;
}
bremfree(bp);
- buf_acquire(bp);
FREE_LOCK(&lk);
(void) bawrite(bp);
ACQUIRE_LOCK(&lk);
@@ -5616,7 +5616,7 @@ getdirtybuf(bp, waitfor)
if ((bp->b_flags & B_DELWRI) == 0)
return (0);
bremfree(bp);
- buf_acquire(bp);
+ bp->b_flags |= B_BUSY;
return (1);
}
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c
index 489a4880473..e03549518ab 100644
--- a/sys/ufs/ffs/ffs_vnops.c
+++ b/sys/ufs/ffs/ffs_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ffs_vnops.c,v 1.49 2008/06/10 20:14:37 beck Exp $ */
+/* $OpenBSD: ffs_vnops.c,v 1.50 2008/06/11 12:35:46 deraadt Exp $ */
/* $NetBSD: ffs_vnops.c,v 1.7 1996/05/11 18:27:24 mycroft Exp $ */
/*
@@ -449,8 +449,7 @@ loop:
}
bremfree(bp);
- buf_acquire(bp);
- bp->b_flags |= B_SCANNED;
+ bp->b_flags |= B_BUSY | B_SCANNED;
splx(s);
/*
* On our final pass through, do all I/O synchronously
diff --git a/sys/ufs/ufs/ufs_bmap.c b/sys/ufs/ufs/ufs_bmap.c
index 75205c56bc3..68c8ea8521e 100644
--- a/sys/ufs/ufs/ufs_bmap.c
+++ b/sys/ufs/ufs/ufs_bmap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ufs_bmap.c,v 1.27 2008/06/10 20:14:37 beck Exp $ */
+/* $OpenBSD: ufs_bmap.c,v 1.28 2008/06/11 12:35:46 deraadt Exp $ */
/* $NetBSD: ufs_bmap.c,v 1.3 1996/02/09 22:36:00 christos Exp $ */
/*
@@ -173,8 +173,6 @@ ufs_bmaparray(struct vnode *vp, daddr64_t bn, daddr64_t *bnp, struct indir *ap,
else {
bp->b_blkno = blkptrtodb(ump, daddr);
bp->b_flags |= B_READ;
- bcstats.pendingreads++;
- bcstats.numreads++;
VOP_STRATEGY(bp);
curproc->p_stats->p_ru.ru_inblock++; /* XXX */
if ((error = biowait(bp)) != 0) {
diff --git a/sys/ufs/ufs/ufs_dirhash.c b/sys/ufs/ufs/ufs_dirhash.c
index 5391c977caa..9184a466372 100644
--- a/sys/ufs/ufs/ufs_dirhash.c
+++ b/sys/ufs/ufs/ufs_dirhash.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ufs_dirhash.c,v 1.18 2008/06/10 20:14:37 beck Exp $ */
+/* $OpenBSD: ufs_dirhash.c,v 1.19 2008/06/11 12:35:47 deraadt Exp $ */
/*
* Copyright (c) 2001, 2002 Ian Dowse. All rights reserved.
*
@@ -211,6 +211,7 @@ ufsdirhash_build(struct inode *ip)
if (UFS_BUFATOFF(ip, (off_t)pos, NULL, &bp) != 0)
goto fail;
}
+
/* Add this entry to the hash. */
ep = (struct direct *)((char *)bp->b_data + (pos & bmask));
if (ep->d_reclen == 0 || ep->d_reclen >
diff --git a/sys/uvm/uvm_swap.c b/sys/uvm/uvm_swap.c
index 0aa5b021f12..b1590559352 100644
--- a/sys/uvm/uvm_swap.c
+++ b/sys/uvm/uvm_swap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_swap.c,v 1.80 2008/06/10 20:50:23 beck Exp $ */
+/* $OpenBSD: uvm_swap.c,v 1.81 2008/06/11 12:35:47 deraadt Exp $ */
/* $NetBSD: uvm_swap.c,v 1.40 2000/11/17 11:39:39 mrg Exp $ */
/*
@@ -1980,7 +1980,7 @@ uvm_swap_io(pps, startslot, npages, flags)
* fill in the bp. we currently route our i/o through
* /dev/drum's vnode [swapdev_vp].
*/
- bp->b_flags = B_BUSY | B_NOCACHE | B_RAW | (flags & (B_READ|B_ASYNC));
+ bp->b_flags = B_BUSY | B_NOCACHE | (flags & (B_READ|B_ASYNC));
bp->b_proc = &proc0; /* XXX */
bp->b_vnbufs.le_next = NOLIST;
bp->b_data = (caddr_t)kva;