diff options
author | 2004-02-15 02:45:46 +0000 | |
---|---|---|
committer | 2004-02-15 02:45:46 +0000 | |
commit | 35fa4c39e7e446b9e461e0899753548be778d66a (patch) | |
tree | 65098d9e27fadd6ea99b2eb7e25f05c6322f5515 /sys/kern/subr_disk.c | |
parent | break in default switch cases (diff) | |
download | wireguard-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.c | 24 |
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(); |