docs/157316: [patch] update devstat(9) man page
Roman Bogorodskiy
novel at FreeBSD.org
Wed May 25 12:50:09 UTC 2011
>Number: 157316
>Category: docs
>Synopsis: [patch] update devstat(9) man page
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-doc
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: doc-bug
>Submitter-Id: current-users
>Arrival-Date: Wed May 25 12:50:09 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator: Roman Bogorodskiy
>Release: FreeBSD 8.2-STABLE i386
>Organization:
>Environment:
System: FreeBSD freefall.freebsd.org 8.2-STABLE FreeBSD 8.2-STABLE #4 r220774: Mon Apr 18 13:56:14 UTC 2011 simon at freefall.freebsd.org:/usr/obj/usr/src/sys/FREEFALL i386
>Description:
devstat(9) manual page is out of date: it mentions devstat_add_entry()
which was deprecated long around (in 5.x times IIRC) and now it's not
even defined in sys/devicestat.h.
I made some changes to devstat(9) manual page:
* replaced devstat_add_entry with devstat_new_entry
* fixed other function prototypes
* added documentation for devstat_start_transaction_bio()
* synced MLINKS with currently available functions
* Removed some fields from 'struct devstat' description
Note: 'struct devstat' description in manual page now
misses a number of fields defined in the original struct. I don't
have enough devstat(9) subsystem knowledge to provide a
meaningful description for those fields.
>How-To-Repeat:
>Fix:
--- devstat_9.diff begins here ---
Index: Makefile
===================================================================
RCS file: /home/ncvs/src/share/man/man9/Makefile,v
retrieving revision 1.390
diff -u -r1.390 Makefile
--- Makefile 5 May 2011 14:13:08 -0000 1.390
+++ Makefile 25 May 2011 11:14:36 -0000
@@ -592,10 +592,12 @@
device_set_desc.9 device_set_desc_copy.9
MLINKS+=device_set_flags.9 device_get_flags.9
MLINKS+=devstat.9 devicestat.9 \
- devstat.9 devstat_add_entry.9 \
+ devstat.9 devstat_new_entry.9 \
devstat.9 devstat_end_transaction.9 \
+ devstat.9 devstat_end_transaction_bio.9 \
devstat.9 devstat_remove_entry.9 \
- devstat.9 devstat_start_transaction.9
+ devstat.9 devstat_start_transaction.9 \
+ devstat.9 devstat_start_transaction_bio.9
MLINKS+=disk.9 disk_alloc.9 \
disk.9 disk_create.9 \
disk.9 disk_destroy.9 \
Index: devstat.9
===================================================================
RCS file: /home/ncvs/src/share/man/man9/devstat.9,v
retrieving revision 1.23
diff -u -r1.23 devstat.9
--- devstat.9 28 Aug 2010 16:32:01 -0000 1.23
+++ devstat.9 25 May 2011 11:14:36 -0000
@@ -40,10 +40,9 @@
.Nd kernel interface for keeping device statistics
.Sh SYNOPSIS
.In sys/devicestat.h
-.Ft void
-.Fo devstat_add_entry
-.Fa "struct devstat *ds"
-.Fa "const char *dev_name"
+.Ft struct devstat *
+.Fo devstat_new_entry
+.Fa "const void *dev_name"
.Fa "int unit_number"
.Fa "u_int32_t block_size"
.Fa "devstat_support_flags flags"
@@ -53,13 +52,23 @@
.Ft void
.Fn devstat_remove_entry "struct devstat *ds"
.Ft void
-.Fn devstat_start_transaction "struct devstat *ds"
+.Fo devstat_start_transaction
+.Fa "struct devstat *ds"
+.Fa "struct bintime *now"
+.Fc
+.Ft void
+.Fo devstat_start_transaction_bio
+.Fa "struct devstat *ds"
+.Fa "struct bio *bp"
+.Fc
.Ft void
.Fo devstat_end_transaction
.Fa "struct devstat *ds"
.Fa "u_int32_t bytes"
.Fa "devstat_tag_type tag_type"
.Fa "devstat_trans_flags flags"
+.Fa "struct bintime *now"
+.Fa "struct bintime *then"
.Fc
.Ft void
.Fo devstat_end_transaction_bio
@@ -77,19 +86,13 @@
code.
Instead, that is left for user programs to handle.
.Pp
-.Fn devstat_add_entry
-registers a device with the
-.Nm
-subsystem.
-The caller is expected to have already allocated \fBand zeroed\fR
-the devstat structure before calling this function.
-.Fn devstat_add_entry
+.Fn devstat_new_entry
+allocates and initializes
+.Va devstat
+structure and returns a pointer to it.
+.Fn devstat_new_entry
takes several arguments:
.Bl -tag -width device_type
-.It ds
-The
-.Va devstat
-structure, allocated and zeroed by the client.
.It dev_name
The device name, e.g.\& da, cd, sa.
.It unit_number
@@ -147,7 +150,7 @@
registers the end of a transaction with the
.Nm
subsystem.
-It takes four arguments:
+It takes six arguments:
.Bl -tag -width tag_type
.It ds
The
@@ -161,12 +164,20 @@
.It flags
Transaction flags indicating whether the transaction was a read, write, or
whether no data was transferred.
+.It now
+Time when transaction started.
+.It then
+Time when transation ended.
.El
.Pp
+.Fn devstat_start_transaction_bio
+and
.Fn devstat_end_transaction_bio
-is a wrapper for
+are wrappers for
+.Fn devstart_start_transaction
+and
.Fn devstat_end_transaction
-which pulls all the information from a
+respectively, which pull all the information from a
.Va "struct bio"
which is ready for biodone().
.Pp
@@ -207,62 +218,20 @@
This will hopefully
eliminate the counter wrap that would come very quickly on some systems if
32 bit integers were used.
-.It bytes_read
-This is the number of bytes that have been read from the device.
-.It bytes_freed
-This is the number of bytes that have been freed/erased on the device.
-.It num_reads
-This is the number of reads from the device.
-.It num_writes
-This is the number of writes to the device.
-.It num_frees
-This is the number of free/erase operations on the device.
-.It num_other
-This is the number of transactions to the device which are neither reads or
-writes.
-For instance,
-.Tn SCSI
-drivers often send a test unit ready command to
-.Tn SCSI
-devices.
-The test unit ready command does not read or write any data.
-It merely causes the device to return its status.
-.It busy_count
-This is the current number of outstanding transactions for the device.
-This should never go below zero, and on an idle device it should be zero.
-If either one of these conditions is not true, it indicates a problem in
-the way
-.Fn devstat_start_transaction
-and
-.Fn devstat_end_transaction
-are being called in client code.
-There should be one and only one
-transaction start event and one transaction end event for each transaction.
.It block_size
This is the block size of the device, if the device has a block size.
.It tag_types
This is an array of counters to record the number of various tag types that
are sent to a device.
See below for a list of tag types.
-.It dev_creation_time
+.It creation_time
This is the time, as reported by
.Fn getmicrotime
-that the device was registered.
+that the device was created.
.It busy_time
This is the amount of time that the device busy count has been greater than
zero.
This is only updated when the busy count returns to zero.
-.It start_time
-This is the time, as reported by
-.Fn getmicrouptime
-that the device busy count went from zero to one.
-.It last_comp_time
-This is the time as reported by
-.Fn getmicrouptime
-that a transaction last completed.
-It is used along with
-.Va start_time
-to calculate the device busy time.
.It flags
These flags indicate which statistics measurements are supported by a
particular device.
@@ -284,6 +253,8 @@
The second parameter is attach order.
See below for a list of
available priorities.
+.It id
+Identification for GEOM nodes.
.El
.Pp
Each device is given a device type.
--- devstat_9.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-doc
mailing list