sg_verify - invoke SCSI VERIFY command(s) on a block device


sg_verify [--bpc=BPC] [--count=COUNT] [--dpo] [--help] [--lba=LBA] [--verbose] [--version] [--vrprotect=VRP] DEVICE


Sends one or more SCSI VERIFY commands to DEVICE. It is the 10 byte VERIFY command defined for block devices (see SBC-2 at Verify starts at the logical block address given by the --lba=LBA option and continues for --count=COUNT blocks. No more than --bpc=BPC blocks are verified by each VERIFY command so if necessary multiple VERIFY commands are sent. No news is good news (i.e. if there are no verify errors detected no messages are sent to stderr and the Unix return status is 0).


Arguments to long options are mandatory for short options as well. The options are arranged in alphabetical order based on the long option name.
-b, --bpc=BPC
 where BPC 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 BPC is less than COUNT then multiple SCSI VERIFY commands are sent to the device. For recent block devices (disks) this value may be constrained by the maximum transfer length field in the block limits VPD page.
-c, --count=COUNT
 where COUNT specifies the number of blocks to verify. The default value is 1 . If COUNT is greater than BPC (or its default value of 128) then multiple SCSI VERIFY commands are sent to the device. The sg_readcap utility can be used to find the maximum number of blocks that a block device (e.g. a disk) has.
-d, --dpo 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.
-h, --help output the usage message then exit.
-l, --lba=LBA
 where LBA specifies the logical block address of the first block to start the verify operation. LBA 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).
-v, --verbose
 increase the level of verbosity, (i.e. debug output).
-V, --version
 print the version string and then exit.
-P, --vrprotect=VRP
 where VRP 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.


The BPC, COUNT and LBA arguments may be followed by one of these multiplicative suffixes: c C *1; w W *2; b B *512; k K KiB *1,024; KB *1,000; m M MiB *1,048,576; MB *1,000,000; g G GiB *1,073,741,824; GB *1,000,000,000; t T TiB *(2**40); TB *(10**12); p P PiB *(2**50) and PB *(10**15). The "T" and "P" based suffixes can only be used for COUNT and LBA. Also a suffix of the form "x<n>" multiplies the leading number by <n>.

Alternatively numerical values can be given in hexadecimal preceded by either "0x" or "0X" (or has a trailing "h" or "H"). When hex numbers are given, multipliers cannot be used.

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-2 (draft) standard 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 error recovery timeout to 0. Mode pages can be modified with the sginfo utility.


The exit status of sg_verify is 0 when it is successful. Otherwise see the sg3_utils(8) man page.


Written by Douglas Gilbert.


Report bugs to <dgilbert at interlog dot com>.


Copyright © 2004-2007 Douglas Gilbert This software is distributed under a FreeBSD license. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


sginfo(sg3_utils), sg_modes(sg3_utils), sg_readcap(sg3_utils), sg_inq(sg3_utils)

openSUSE Logo