summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_disk.c
diff options
context:
space:
mode:
authortedu <tedu@openbsd.org>2004-02-15 02:45:46 +0000
committertedu <tedu@openbsd.org>2004-02-15 02:45:46 +0000
commit35fa4c39e7e446b9e461e0899753548be778d66a (patch)
tree65098d9e27fadd6ea99b2eb7e25f05c6322f5515 /sys/kern/subr_disk.c
parentbreak in default switch cases (diff)
downloadwireguard-openbsd-35fa4c39e7e446b9e461e0899753548be778d66a.tar.xz
wireguard-openbsd-35fa4c39e7e446b9e461e0899753548be778d66a.zip
new arg to disk_unbusy, to record separate read/write statistics.
looked at by various, testing henning@ mcbride@ dan weeks mostly from netbsd via Pedro Martelletto <pbastos@rdc.puc-rio.br>
Diffstat (limited to 'sys/kern/subr_disk.c')
-rw-r--r--sys/kern/subr_disk.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/sys/kern/subr_disk.c b/sys/kern/subr_disk.c
index 7802ac73801..9ad79738878 100644
--- a/sys/kern/subr_disk.c
+++ b/sys/kern/subr_disk.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: subr_disk.c,v 1.24 2004/01/21 21:00:14 tedu Exp $ */
+/* $OpenBSD: subr_disk.c,v 1.25 2004/02/15 02:45:46 tedu Exp $ */
/* $NetBSD: subr_disk.c,v 1.17 1996/03/16 23:17:08 christos Exp $ */
/*
@@ -371,9 +371,10 @@ disk_busy(diskp)
* time, and reset the timestamp.
*/
void
-disk_unbusy(diskp, bcount)
+disk_unbusy(diskp, bcount, read)
struct disk *diskp;
long bcount;
+ int read;
{
int s;
struct timeval dv_time, diff_time;
@@ -390,10 +391,15 @@ disk_unbusy(diskp, bcount)
diskp->dk_timestamp = dv_time;
if (bcount > 0) {
- diskp->dk_bytes += bcount;
- diskp->dk_xfer++;
- }
- diskp->dk_seek++;
+ if (read) {
+ diskp->dk_rbytes += bcount;
+ diskp->dk_rxfer++;
+ } else {
+ diskp->dk_wbytes += bcount;
+ diskp->dk_wxfer++;
+ }
+ } else
+ diskp->dk_seek++;
add_disk_randomness(bcount ^ diff_time.tv_usec);
}
@@ -430,8 +436,10 @@ disk_resetstat(diskp)
{
int s = splbio(), t;
- diskp->dk_xfer = 0;
- diskp->dk_bytes = 0;
+ diskp->dk_rxfer = 0;
+ diskp->dk_rbytes = 0;
+ diskp->dk_wxfer = 0;
+ diskp->dk_wbytes = 0;
diskp->dk_seek = 0;
t = splclock();