.TH SG_VERIFY "8" "August 2013" "sg3_utils\-1.37" SG3_UTILS
.SH NAME
sg_verify \- invoke SCSI VERIFY command(s) on a block device
.SH SYNOPSIS
.B sg_verify
[\fI\-\-16\fR] [\fI\-\-bpc=BPC\fR] [\fI\-\-count=COUNT\fR] [\fI\-\-dpo\fR]
[\fI\-\-ebytchk=BCH\fR] [\fI\-\-group=GN\fR] [\fI\-\-help\fR]
[\fI\-\-in=IF\fR] [\fI\-\-lba=LBA\fR] [\fI\-\-ndo=NDO\fR] [\fI\-\-quiet\fR]
[\fI\-\-readonly\fR] [\fI\-\-verbose\fR] [\fI\-\-version\fR]
[\fI\-\-vrprotect=VRP\fR] \fIDEVICE\fR
.SH DESCRIPTION
.\" Add any additional description here
.PP
Sends one or more SCSI VERIFY (10 or 16) commands to \fIDEVICE\fR. These SCSI
commands are defined in the SBC\-2 (draft) standard at http://www.t10.org and
SBC\-3 drafts.
.PP
When \fI\-\-ndo=NDO\fR is not given then the verify starts at the logical
block address given by the \fI\-\-lba=LBA\fR option and continues for
\fI\-\-count=COUNT\fR blocks. No more than \fI\-\-bpc=BPC\fR blocks are
verified by each VERIFY command so if necessary multiple VERIFY commands are
sent. Medium verification operations are performed by the \fIDEVICE\fR (e.g.
assuming each block has additional EEC data, check this against the logical
block contents). No news is good news (i.e. if there are no verify errors
detected then no messages are sent to stderr and the Unix exit status is 0).
.PP
When \fI\-\-ndo=NDO\fR is given then the \fI\-\-bpc=BPC\fR option is
ignored. A single VERIFY command is issued and a comparison starts at the
logical block address given by the \fI\-\-lba=LBA\fR option and continues for
\fI\-\-count=COUNT\fR blocks. The VERIFY command has an associated data\-out
buffer that is \fINDO\fR bytes long. The contents of the data\-out buffer are
obtained from the \fIFN\fR file (if \fI\-\-in=FN\fR is given) or from stdin.
A comparison takes place between data\-out buffer and the logical blocks
on the \fIDEVICE\fR. If the comparison is good then no messages are sent to
stderr and the Unix exit status is 0. If the comparison fails then a sense
buffer with a sense key of MISCOMPARE is returned; in this case the Unix exit
status will be 14. Messages will be sent to stderr associated with MISCOMPARE
sense buffer unless the \fI\-\-quiet\fR option is given.
.PP
In SBC\-3 revision 34 the BYTCHK field in all SCSI VERIFY commands was
expanded from one to two bits. That required some changes in the options
of this utility, see the section below on OPTION CHANGES.
.SH OPTIONS
Arguments to long options are mandatory for short options as well.
The options are arranged in alphabetical order based on the long
option name.
.TP
\fB\-S\fR, \fB\-\-16\fR
uses a VERIFY(16) command (default VERIFY(10)). Even without this option,
using an \fI\-\-lba=LBA\fR which is too large, will cause the utility
to issue a VERIFY(16) command.
.TP
\fB\-b\fR, \fB\-\-bpc\fR=\fIBPC\fR
this option is ignored if \fI\-\-ndo=NDO\fR is given. Otherwise \fIBPC\fR
specifies the maximum number of blocks that will be verified by a single SCSI
VERIFY command. The default value is 128 blocks which equates to 64 KB for a
disk with 512 byte blocks. If \fIBPC\fR is less than \fICOUNT\fR then
multiple SCSI VERIFY commands are sent to the \fIDEVICE\fR. For the default
VERIFY(10) \fIBPC\fR cannot exceed 0xffff (65,535) while for VERIFY(16)
\fIBPC\fR cannot exceed 0x7fffffff (2,147,483,647). For recent block
devices (disks) this value may be constrained by the maximum transfer length
field in the block limits VPD page.
.TP
\fB\-c\fR, \fB\-\-count\fR=\fICOUNT\fR
where \fICOUNT\fR specifies the number of blocks to verify. The default value
is 1 . If \fICOUNT\fR is greater than \fIBPC\fR (or its default value of 128)
and \fINDO\fR is not given, 0 or less then multiple SCSI VERIFY commands are
sent to the device. Otherwise \fICOUNT\fR becomes the contents of the
verification length field of the SCSI VERIFY command issued. The
.B sg_readcap
utility can be used to find the maximum number of blocks that a block
device (e.g. a disk) has.
.TP
\fB\-d\fR, \fB\-\-dpo\fR
disable page out changes the cache retention priority of blocks read on
the device's cache to the lowest priority. This means that blocks read by
other commands are more likely to remain in the device's cache.
.TP
\fB\-E\fR, \fB\-\-ebytchk\fR=\fIBCH\fR
sets the BYTCHK field to \fIBCH\fR overriding the value (1) set by the
\fI\-\-ndo=NDO\fR option. Values of 1, 2 or 3 are accepted for \fIBCH\fR
however sbc3r34 reserves the value 2. If this option is given then
\fI\-\-ndo=NDO\fR must also be given. If \fIBCH\fR is 3 then \fICOUNT\fR
must be 1 and \fINDO\fR should be the size of one logical block (plus the
size of some or all of the protection infomation if \fIVRP\fR is greater
than 0).
.TP
\fB\-g\fR, \fB\-\-group\fR=\fIGN\fR
where \fIGN\fR becomes the contents of the group number field in the SCSI
VERIFY(16) command. The default value for \fIGN\fR is 0. Note that this
option is ignored for the SCSI VERIFY(10) command.
.TP
\fB\-h\fR, \fB\-\-help\fR
output the usage message then exit.
.TP
\fB\-i\fR, \fB\-\-in\fR=\fIIF\fR
where \fIIF\fR is the name of a file from which \fINDO\fR bytes will be read
and placed in the data\-out buffer. This is only done when the
\fI\-\-ndo=NDO\fR option is given. If this option is not given then stdin
is read. If \fIIF\fR is "\-" then stdin is also used.
.TP
\fB\-l\fR, \fB\-\-lba\fR=\fILBA\fR
where \fILBA\fR specifies the logical block address of the first block to
start the verify operation. \fILBA\fR is assumed to be decimal unless prefixed
by '0x' or a trailing 'h' (see below). The default value is 0 (i.e. the start
of the device).
.TP
\fB\-n\fR, \fB\-\-ndo\fR=\fINDO\fR
\fINDO\fR is the number of bytes to obtain from the \fIFN\fR file (if
\fI\-\-in=FN\fR is given) or from stdin. Those bytes are placed in the
data\-out buffer associated with the SCSI VERIFY command and \fINDO\fR
is placed in the verification length field in the cdb. The default value
for \fINDO\fR is 0 and the maximum value is dependant on the OS. If the
\fI\-\-ebytchk=BCH\fR option is not given then the BYTCHK field in the cdb
is set to 1.
.TP
\fB\-q\fR, \fB\-\-quiet\fR
suppress the sense buffer messages associated with a MISCOMPARE sense key
that would otherwise be sent to stderr. Still set the exit status to 14
which is the sense key value indicating a MISCOMPARE .
.TP
\fB\-r\fR, \fB\-\-readonly\fR
opens the DEVICE read\-only rather than read\-write which is the
default. The Linux sg driver needs read\-write access for the SCSI
VERIFY command but other access methods may require read\-only access.
.TP
\fB\-v\fR, \fB\-\-verbose\fR
increase the level of verbosity, (i.e. debug output).
.TP
\fB\-V\fR, \fB\-\-version\fR
print the version string and then exit.
.TP
\fB\-P\fR, \fB\-\-vrprotect\fR=\fIVRP\fR
where \fIVRP\fR is the value in the vrprotect field in the VERIFY command
cdb. It must be a value between 0 and 7 inclusive. The default value is
zero.
.SH BYTCHK
BYTCHK is the name of a field (two bits wide) in the VERIFY(10) and
VERIFY(16) commands. When set to 1 or 3 (sbc3r34 reserves the value 2) it
indicates that associated with the SCSI VERIFY command, a data\-out buffer
will be sent for the device (disk) to check. Using the \fI\-\-ndo=NDO\fR
option sets the BYTCHK field to 1 and \fINDO\fR is the number of bytes
placed in the data\-out buffer. Those bytes are obtained from stdin or
\fIIF\fR (from the \fI\-\-in=FN\fR option). The \fI\-\-ebytchk=BCH\fR
option may be used to override the BYTCHK field value of 1 with \fIBCH\fR.
.PP
The calculation of \fINDO\fR is left up to the user. Its value depends
on the logical block size (which can be found with the sg_readcap utility),
the \fICOUNT\fR and the \fIVRP\fR values. If the \fIVRP\fR is greater than
0 then each logical block will contain an extra 8 bytes (at least) of
protection information.
.PP
When the BYTCHK field is 0 then the verification process done by the
device (disk) is vendor specific. It typically involves checking each
block on the disk against its error correction codes (ECC) which is
additional data also held on the disk.
.PP
Many Operating Systems put limits on the maximum size of the
data\-out (and data\-in) buffer. For Linux at one time the limit was
less than 1 MB but has been increased somewhat.
.SH OPTION CHANGES
Earlier versions of this utility had a \fI\-\-bytchk=NDO\fR option which
set the BYTCHK bit and set the cdb verification length field to \fINDO\fR.
The shorter form of that option was \fI\-B NDO\fR. For backward
compatibility that option is still present but not documented. In its place
is the \fI\-\-ndo=NDO\fR whose shorter form of \fI\-n NDO\fR.
\fI\-\-ndo=NDO\fR sets the BYTCHK field to 1 unless that is overridden by
the \fI\-\-ebytchk=BCH\fR.
.SH NOTES
Various numeric arguments (e.g. \fILBA\fR) may include multiplicative
suffixes or be given in hexadecimal. See the "NUMERIC ARGUMENTS" section
in the sg3_utils(8) man page.
.PP
The amount of error correction and the number of retries attempted before a
block is considered defective are controlled in part by the Verify Error
Recovery mode page. A note in the SBC\-3 draft (rev 29 section 6.4.9 on the
Verify Error Recovery mode page) advises that to minimize the number of
checks (and hence have the most "sensitive" verify check) do the following
in that mode page: set the EER bit to 0, the PER bit to 1, the DTE bit to 1,
the DCR bit to 1, the verify retry count to 0 and the verify recovery time
limit to 0. Mode pages can be modified with the
.B sdparm
utility.
.PP
The SCSI VERIFY(6) command defined in the SSC\-2 standard and later (i.e.
for tape drive systems) is not supported by this utility.
.SH EXIT STATUS
The exit status of sg_verify is 0 when it is successful. When \fIBCH\fR is
other than 0 then a comparison takes place and if it fails then the exit
status is 14 which happens to be the sense key value of MISCOMPARE.
Otherwise see the EXIT STATUS section in the sg3_utils(8) man page.
.PP
Earlier versions of this utility set an exit status of 98 when there was a
MISCOMPARE.
.SH AUTHORS
Written by Douglas Gilbert.
.SH "REPORTING BUGS"
Report bugs to <dgilbert at interlog dot com>.
.SH COPYRIGHT
Copyright \(co 2004\-2013 Douglas Gilbert
.br
This software is distributed under a FreeBSD license. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
.SH "SEE ALSO"
.B sdparm(sdparm), sg_modes(sg3_utils), sg_readcap(sg3_utils),
.B sg_inq(sg3_utils)
