freebsd-dev/sys/cam
Poul-Henning Kamp 7194d335cf Run a revision of the devstat interface:
Kernel:

Change statistics to use the *uptime() timescale (ie: relative to
boottime) rather than the UTC aligned timescale.  This makes the
device statistics code oblivious to clock steps.

Change timestamps to bintime format, they are cheaper.

Remove the "busy_count", and replace it with two counter fields:
"start_count" and "end_count", which are updated in the down and
up paths respectively.  This removes the locking constraint on
devstat.

Add a timestamp argument to devstat_start_transaction(), this will
normally be a timestamp set by the *_bio() function in bp->bio_t0.
Use this field to calculate duration of I/O operations.

Add two timestamp arguments to devstat_end_transaction(), one is
the current time, a NULL pointer means "take timestamp yourself",
the other is the timestamp of when this transaction started (see
above).

Change calculation of busy_time to operate on "the salami principle":
Only when we are idle, which we can determine by the start+end
counts being identical, do we update the "busy_from" field in the
down path.  In the up path we accumulate the timeslice in busy_time
and update busy_from.

Change the byte_* and num_* fields into two arrays: bytes[] and
operations[].

Userland:

Change the misleading "busy_time" name to be called "snap_time" and
make the time long double since that is what most users need anyway,
fill it using clock_gettime(CLOCK_MONOTONIC) to put it on the same
timescale as the kernel fields.

Change devstat_compute_etime() to operate on struct bintime.

Remove the version 2 legacy interface: the change to bintime makes
compatibility far too expensive.

Fix a bug in systat's "vm" page where boot relative busy times would
be bogus.

Bump __FreeBSD_version to 500107

Review & Collaboration by:	ken
2003-03-15 21:59:06 +00:00
..
scsi Don't use the devstat->busy_count for state decisions in the device 2003-03-15 11:00:56 +00:00
cam_ccb.h Add a transport settings variant for Fibre Channel. 2001-06-24 18:17:45 +00:00
cam_debug.h Rewrite of the CAM error recovery code. 2001-03-27 05:45:52 +00:00
cam_periph.c Run a revision of the devstat interface: 2003-03-15 21:59:06 +00:00
cam_periph.h Centralize the devstat handling for all GEOM disk device drivers 2003-03-08 08:01:31 +00:00
cam_queue.c Fix typos, mostly s/ an / a / where appropriate and a few s/an/and/ 2002-12-30 21:18:15 +00:00
cam_queue.h Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
cam_sim.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
cam_sim.h Const'ify cam_sim.sim_name to quiet warnings. 2001-01-24 01:46:18 +00:00
cam_xpt_periph.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 05:07:58 +00:00
cam_xpt_sim.h Clean up the xpt_sim creation to mirror how HBA drivers perform this task. 2000-01-14 23:08:46 +00:00
cam_xpt.c Centralize the devstat handling for all GEOM disk device drivers 2003-03-08 08:01:31 +00:00
cam_xpt.h Rewrite of the CAM error recovery code. 2001-03-27 05:45:52 +00:00
cam.c Define the kern.cam sysctl in the cam layer, rather than multiply in several 2002-01-09 03:39:04 +00:00
cam.h Define the kern.cam sysctl in the cam layer, rather than multiply in several 2002-01-09 03:39:04 +00:00