.TH SG_VERIFY "8" "December 2019" "sg3_utils\-1.45" SG3_UTILS
.SH NAME
sg_verify \- invoke SCSI VERIFY command(s) on a block device
.SH SYNOPSIS
.B sg_verify
[\fI\-\-0\fR] [\fI\-\-16\fR] [\fI\-\-bpc=BPC\fR] [\fI\-\-count=COUNT\fR]
[\fI\-\-dpo\fR] [\fI\-\-ff\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 and SBC\-3 standards at https://www.t10.org
and SBC\-4 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\-0\fR, \fB\-\-0\fR
a buffer \fINDO\fR bytes long full of zeros is sent as the data\-out
part of a VERIFY command. So stdin is not read and if \fI\-\-in=IF\fR
is given, an error is generated. Useful when \fIBCH\fR is 3 to check
if some or all of \fIDEVICE\fR (e.g. a disk) is zero filled blocks.
.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 than 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 \fINDO\fR
should be the size of one logical block (plus the size of some or all
of the protection information if \fIVRP\fR is greater
than 0).
.TP
\fB\-f\fR, \fB\-\-ff\fR
a buffer \fINDO\fR bytes long full of 0xff bytes is sent as the data\-out
part of a VERIFY command. So stdin is not read and if \fI\-\-in=IF\fR
is given, an error is generated. Useful when \fIBCH\fR is 3 to check
if some or all of \fIDEVICE\fR (e.g. a disk) is 0xff byte filled blocks.
.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. It can be from 0 to 63 inclusive. 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 dependent 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\-2019 Douglas Gilbert
.br
This software is distributed under a BSD\-2\-Clause 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)
