summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/octeon/dev/amdcf.c4
-rw-r--r--sys/arch/octeon/dev/octcf.c4
-rw-r--r--sys/arch/sparc64/dev/fd.c10
-rw-r--r--sys/dev/ata/wd.c6
-rw-r--r--sys/dev/flash.c4
-rw-r--r--sys/dev/isa/fd.c6
-rw-r--r--sys/kern/subr_disk.c7
-rw-r--r--sys/scsi/cd.c6
-rw-r--r--sys/scsi/sd.c6
-rw-r--r--sys/sys/disk.h4
10 files changed, 29 insertions, 28 deletions
diff --git a/sys/arch/octeon/dev/amdcf.c b/sys/arch/octeon/dev/amdcf.c
index e846914f9ee..d5609781c20 100644
--- a/sys/arch/octeon/dev/amdcf.c
+++ b/sys/arch/octeon/dev/amdcf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: amdcf.c,v 1.2 2016/01/20 17:23:58 stefan Exp $ */
+/* $OpenBSD: amdcf.c,v 1.3 2017/05/04 22:47:27 deraadt Exp $ */
/*
* Copyright (c) 2007, Juniper Networks, Inc.
@@ -672,7 +672,7 @@ amdcfdone(void *arg)
bp->b_flags |= B_ERROR;
disk_unbusy(&sc->sc_dk, (bp->b_bcount - bp->b_resid),
- (bp->b_flags & B_READ));
+ bp->b_blkno, (bp->b_flags & B_READ));
biodone(bp);
}
diff --git a/sys/arch/octeon/dev/octcf.c b/sys/arch/octeon/dev/octcf.c
index 79c29fcf944..42beab06c46 100644
--- a/sys/arch/octeon/dev/octcf.c
+++ b/sys/arch/octeon/dev/octcf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: octcf.c,v 1.28 2016/01/20 17:23:58 stefan Exp $ */
+/* $OpenBSD: octcf.c,v 1.29 2017/05/04 22:47:27 deraadt Exp $ */
/* $NetBSD: wd.c,v 1.193 1999/02/28 17:15:27 explorer Exp $ */
/*
@@ -390,7 +390,7 @@ octcfdone(void *arg)
bp->b_flags |= B_ERROR;
disk_unbusy(&wd->sc_dk, (bp->b_bcount - bp->b_resid),
- (bp->b_flags & B_READ));
+ bp->b_blkno, (bp->b_flags & B_READ));
biodone(bp);
}
diff --git a/sys/arch/sparc64/dev/fd.c b/sys/arch/sparc64/dev/fd.c
index 8c48b4ee12d..17a28a955fe 100644
--- a/sys/arch/sparc64/dev/fd.c
+++ b/sys/arch/sparc64/dev/fd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: fd.c,v 1.47 2017/04/30 16:45:45 mpi Exp $ */
+/* $OpenBSD: fd.c,v 1.48 2017/05/04 22:47:27 deraadt Exp $ */
/* $NetBSD: fd.c,v 1.112 2003/08/07 16:29:35 agc Exp $ */
/*-
@@ -1420,7 +1420,7 @@ loop:
case DSKCHGWAIT:
timeout_del(&fdc->fdctimeout_to);
- disk_unbusy(&fd->sc_dk, 0, 0);
+ disk_unbusy(&fd->sc_dk, 0, 0, 0);
if (fdc->sc_nstat != 2 || (st0 & 0xf8) != 0x20 ||
cyl != 1 * fd->sc_type->step) {
fdcstatus(fdc, "dskchg seek failed");
@@ -1525,7 +1525,7 @@ loop:
/*FALLTHROUGH*/
case SEEKCOMPLETE:
/* no data on seek */
- disk_unbusy(&fd->sc_dk, 0, 0);
+ disk_unbusy(&fd->sc_dk, 0, 0, 0);
/* Make sure seek really happened. */
if (fdc->sc_nstat != 2 || (st0 & 0xf8) != 0x20 ||
@@ -1570,7 +1570,7 @@ loop:
case IOCLEANUPWAIT: /* IO FAILED, cleanup succeeded */
timeout_del(&fdc->fdctimeout_to);
disk_unbusy(&fd->sc_dk, (bp->b_bcount - bp->b_resid),
- (bp->b_flags & B_READ));
+ bp->b_blkno, (bp->b_flags & B_READ));
fdcretry(fdc);
goto loop;
@@ -1578,7 +1578,7 @@ loop:
timeout_del(&fdc->fdctimeout_to);
disk_unbusy(&fd->sc_dk, (bp->b_bcount - bp->b_resid),
- (bp->b_flags & B_READ));
+ bp->b_blkno, (bp->b_flags & B_READ));
if (fdc->sc_nstat != 7 || st1 != 0 ||
((st0 & 0xf8) != 0 &&
diff --git a/sys/dev/ata/wd.c b/sys/dev/ata/wd.c
index 5e2461feb3a..cd168223672 100644
--- a/sys/dev/ata/wd.c
+++ b/sys/dev/ata/wd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: wd.c,v 1.120 2016/01/20 17:23:58 stefan Exp $ */
+/* $OpenBSD: wd.c,v 1.121 2017/05/04 22:47:27 deraadt Exp $ */
/* $NetBSD: wd.c,v 1.193 1999/02/28 17:15:27 explorer Exp $ */
/*
@@ -568,7 +568,7 @@ noerror: if ((wd->sc_wdc_bio.flags & ATA_CORR) || wd->retries > 0)
wd->sc_dev.dv_xname);
}
disk_unbusy(&wd->sc_dk, (bp->b_bcount - bp->b_resid),
- (bp->b_flags & B_READ));
+ bp->b_blkno, (bp->b_flags & B_READ));
biodone(bp);
wd->openings++;
wdstart(wd);
@@ -589,7 +589,7 @@ wdrestart(void *v)
return;
s = splbio();
- disk_unbusy(&wd->sc_dk, 0, (bp->b_flags & B_READ));
+ disk_unbusy(&wd->sc_dk, 0, 0, (bp->b_flags & B_READ));
__wdstart(v, bp);
splx(s);
}
diff --git a/sys/dev/flash.c b/sys/dev/flash.c
index c391fb83b47..e0069a5c130 100644
--- a/sys/dev/flash.c
+++ b/sys/dev/flash.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: flash.c,v 1.31 2015/08/12 22:37:32 krw Exp $ */
+/* $OpenBSD: flash.c,v 1.32 2017/05/04 22:47:27 deraadt Exp $ */
/*
* Copyright (c) 2005 Uwe Stuehler <uwe@openbsd.org>
@@ -931,7 +931,7 @@ flashdone(void *v)
/* Instrumentation. */
disk_unbusy(&sc->sc_dk, bp->b_bcount - bp->b_resid,
- (bp->b_flags & B_READ) != 0);
+ bp->b_blkno, (bp->b_flags & B_READ) != 0);
if (bp->b_error != 0)
bp->b_flags |= B_ERROR;
diff --git a/sys/dev/isa/fd.c b/sys/dev/isa/fd.c
index b2b378b2846..3e16d054428 100644
--- a/sys/dev/isa/fd.c
+++ b/sys/dev/isa/fd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: fd.c,v 1.103 2015/11/25 04:49:10 tedu Exp $ */
+/* $OpenBSD: fd.c,v 1.104 2017/05/04 22:47:27 deraadt Exp $ */
/* $NetBSD: fd.c,v 1.90 1996/05/12 23:12:03 mycroft Exp $ */
/*-
@@ -811,7 +811,7 @@ loop:
return 1;
case SEEKCOMPLETE:
- disk_unbusy(&fd->sc_dk, 0, 0); /* no data on seek */
+ disk_unbusy(&fd->sc_dk, 0, 0, 0); /* no data on seek */
/* Make sure seek really happened. */
out_fdc(iot, ioh, NE7CMD_SENSEI);
@@ -838,7 +838,7 @@ loop:
timeout_del(&fd->fdtimeout_to);
disk_unbusy(&fd->sc_dk, (bp->b_bcount - bp->b_resid),
- (bp->b_flags & B_READ));
+ fd->sc_blkno, (bp->b_flags & B_READ));
if (fdcresult(fdc) != 7 || (st0 & 0xf8) != 0) {
isadma_abort(fdc->sc_drq);
diff --git a/sys/kern/subr_disk.c b/sys/kern/subr_disk.c
index 4d220feeae0..07783b57002 100644
--- a/sys/kern/subr_disk.c
+++ b/sys/kern/subr_disk.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: subr_disk.c,v 1.229 2017/04/20 14:13:00 visa Exp $ */
+/* $OpenBSD: subr_disk.c,v 1.230 2017/05/04 22:47:27 deraadt Exp $ */
/* $NetBSD: subr_disk.c,v 1.17 1996/03/16 23:17:08 christos Exp $ */
/*
@@ -1245,7 +1245,7 @@ disk_busy(struct disk *diskp)
* time, and reset the timestamp.
*/
void
-disk_unbusy(struct disk *diskp, long bcount, int read)
+disk_unbusy(struct disk *diskp, long bcount, daddr_t blkno, int read)
{
struct timeval dv_time, diff_time;
@@ -1273,7 +1273,8 @@ disk_unbusy(struct disk *diskp, long bcount, int read)
mtx_leave(&diskp->dk_mtx);
- add_disk_randomness(bcount ^ diff_time.tv_usec);
+ add_disk_randomness(bcount ^ diff_time.tv_usec ^
+ (blkno >> 32) ^ (blkno & 0xffffffff));
}
int
diff --git a/sys/scsi/cd.c b/sys/scsi/cd.c
index 2f453795dea..f1c3927bc73 100644
--- a/sys/scsi/cd.c
+++ b/sys/scsi/cd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cd.c,v 1.218 2016/03/12 15:16:04 krw Exp $ */
+/* $OpenBSD: cd.c,v 1.219 2017/05/04 22:47:27 deraadt Exp $ */
/* $NetBSD: cd.c,v 1.100 1997/04/02 02:29:30 mycroft Exp $ */
/*
@@ -622,7 +622,7 @@ cd_buf_done(struct scsi_xfer *xs)
case XS_NO_CCB:
/* The adapter is busy, requeue the buf and try it later. */
- disk_unbusy(&sc->sc_dk, bp->b_bcount - xs->resid,
+ disk_unbusy(&sc->sc_dk, bp->b_bcount - xs->resid, bp->b_blkno,
bp->b_flags & B_READ);
bufq_requeue(&sc->sc_bufq, bp);
scsi_xs_put(xs);
@@ -667,7 +667,7 @@ retry:
break;
}
- disk_unbusy(&sc->sc_dk, bp->b_bcount - xs->resid,
+ disk_unbusy(&sc->sc_dk, bp->b_bcount - xs->resid, bp->b_blkno,
bp->b_flags & B_READ);
s = splbio();
diff --git a/sys/scsi/sd.c b/sys/scsi/sd.c
index 30fb36b2786..b964f803da3 100644
--- a/sys/scsi/sd.c
+++ b/sys/scsi/sd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sd.c,v 1.269 2016/03/19 15:37:33 bluhm Exp $ */
+/* $OpenBSD: sd.c,v 1.270 2017/05/04 22:47:27 deraadt Exp $ */
/* $NetBSD: sd.c,v 1.111 1997/04/02 02:29:41 mycroft Exp $ */
/*-
@@ -764,7 +764,7 @@ sd_buf_done(struct scsi_xfer *xs)
case XS_NO_CCB:
/* The adapter is busy, requeue the buf and try it later. */
- disk_unbusy(&sc->sc_dk, bp->b_bcount - xs->resid,
+ disk_unbusy(&sc->sc_dk, bp->b_bcount - xs->resid, bp->b_blkno,
bp->b_flags & B_READ);
bufq_requeue(&sc->sc_bufq, bp);
scsi_xs_put(xs);
@@ -812,7 +812,7 @@ retry:
break;
}
- disk_unbusy(&sc->sc_dk, bp->b_bcount - xs->resid,
+ disk_unbusy(&sc->sc_dk, bp->b_bcount - xs->resid, bp->b_blkno,
bp->b_flags & B_READ);
s = splbio();
diff --git a/sys/sys/disk.h b/sys/sys/disk.h
index 742a3f84d66..4dcd48839f0 100644
--- a/sys/sys/disk.h
+++ b/sys/sys/disk.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: disk.h,v 1.35 2016/05/21 14:00:27 jsing Exp $ */
+/* $OpenBSD: disk.h,v 1.36 2017/05/04 22:47:27 deraadt Exp $ */
/* $NetBSD: disk.h,v 1.11 1996/04/28 20:22:50 thorpej Exp $ */
/*
@@ -144,7 +144,7 @@ int disk_openpart(struct disk *, int, int, int);
void disk_closepart(struct disk *, int, int);
void disk_gone(int (*)(dev_t, int, int, struct proc *), int);
void disk_busy(struct disk *);
-void disk_unbusy(struct disk *, long, int);
+void disk_unbusy(struct disk *, long, daddr_t, int);
int disk_lock(struct disk *);
void disk_lock_nointr(struct disk *);