Provided by: sg3-utils_1.40-0ubuntu1_amd64 bug

NAME

       sg_reassign - send SCSI REASSIGN BLOCKS command

SYNOPSIS

       sg_reassign [--address=A,A...] [--dummy] [--eight=0|1] [--grown] [--help] [--longlist=0|1]
       [--primary] [--verbose] [--version] DEVICE

DESCRIPTION

       Send a SCSI REASSIGN BLOCKS command to DEVICE. Alternatively this  utility  can  find  the
       number  of element in a "grown" or "primary" defect list with a SCSI READ DEFECT DATA (10)
       command. These SCSI commands are defined in SBC-2 for direct access devices (e.g. a disk).
       Reassign  blocks  is  designed  to change the physical location of a logical block that is
       known or suspected to be defective to another area  on  the  media.  Disks  are  typically
       formatted with blocks held in reserve for this situation.

       If neither the --grown nor --primary option is supplied then one or more addresses need to
       be given. If the address (or all of the addresses) fit into 4 bytes and '--eight=1' is not
       given  then  the  parameter  block  passed  to  DEVICE  is made up of 4 byte logical block
       addresses. If any of the addresses need more than 4 bytes to represent (i.e. >= 2**32)  or
       '--eight=1'  is  given  then  the  parameter  block  passed to DEVICE is made up of 8 byte
       logical block addresses.

OPTIONS

       Arguments to long options are mandatory for short options as well.

       -a, --address=A,A...
              where A,A... is a string of comma separated numbers. Each number is interpreted  as
              decimal  unless  prefixed  by  '0x'  or  '0X' (or it has a trailing 'h' or 'H'). If
              multiple logical block addresses are given they must be separated by a comma  or  a
              (single)  space. A string that contains any space separators needs to be quoted. At
              least one address must be given.

       -a, --address=-
              reads one or more logical block addresses from stdin. These may  be  comma,  space,
              tab  or  linefeed  (newline)  separated.  If a line contains "#" then the remaining
              characters on that line are ignored.  Otherwise  each  non  separator  sequence  of
              characters  should  resolve to a decimal number unless prefixed by '0x' or '0X' (or
              has a trailing 'h'). At least one address must be given. Lines should not be longer
              than 1023 bytes.

       -d, --dummy
              prepare for but do not execute the SCSI REASSIGN BLOCKS command. Since the REASSIGN
              BLOCKS command is essentially irreversible, paranoid users may wish  to  check  the
              invocation  of  this  utility before reassigning defective blocks on a disk. Useful
              with '-vv' for those who wish to view the parameter block that will  accompany  the
              command.

       -e, --eight=0 | 1
              when  value is 1 then it sets the 'LONGLBA' flag in the command indicating that the
              addresses in the associated parameter block are 8 byte quantities.  When value is 0
              then  it  clears the 'LONGLBA' flag in the command indicating that the addresses in
              the associated parameter block are 4 byte quantities.  If this option is not  given
              then 4 byte quantities are assumed unless one of the address is too large.

       -g, --grown
              use  the  SCSI READ DEFECT DATA (10) command to determine the number of elements in
              the "grown defect list". When this option is given  there  is  no  reassignment  of
              blocks  (i.e.  this  utility  is  passive).  When  this  option  is  given then the
              --address= option is  not  permitted.  See  the  discussion  below  concerning  the
              relationship  between  reassigned  blocks  and  the grown defect list. This list is
              sometimes referred to as the GLIST.

       -h, --help
              output the usage message then exit.

       -l, --longlist=0 | 1
              sets the REASSIGN BLOCKS cdb field of the same name to the given value.  Only  1000
              addresses  are  permitted  so  there should be no need to specify a value of 1. The
              short list variant restricts the parameter block length to  2  **  16  bytes  (i.e.
              about 16000 4 byte addresses or 8000 8 byte addresses). Added for completeness.

       -p, --primary
              use  the  SCSI READ DEFECT DATA (10) command to determine the number of elements in
              the "primary defect list" which is established during  the  manufacturing  process.
              When  this option is given there is no reassignment of blocks (i.e. this utility is
              passive). When this option is given then the --address= option  is  not  permitted.
              This list is sometimes referred to as the PLIST.

       -v, --verbose
              increase the level of verbosity, (i.e. debug output).

       -V, --version
              print the version string and then exit.

NOTES

       Note  that if the ARRE field (for reads) and/or the AWRE field (for writes) are set in the
       "Read Write Error Recovery" mode page then recoverable  read  and/or  write  errors  cause
       automatic  reassignment of the defective block. The PER bit in the same mode page controls
       whether a RECOVERED ERROR sense  key  is  reported  on  not  (PER=1  implies  do  report).
       Irrespective  of the ARRE, AWRE or PER field settings, the error counter log pages reflect
       any errors (recovered or otherwise). Whenever a block is reassigned, a new entry is  added
       in  the "grown" defect list. Apart from doing selftests (see sg_senddiag or smartmontools)
       regularly, monitoring the grown defect list of a  disk  is  a  reasonable  metric  of  its
       health.  If  the grown list starts growing quickly that is an ominous sign. The best grown
       defect lists are empty ones. The number of elements in the grown defect list can be viewed
       with  the  --grown  option.  The  contents of the grown defect list can be viewed with the
       'sginfo -G' utility.

       If an unrecoverable error is detected at a logical block address then REASSIGN  BLOCKS  is
       needed  to  reassign  the  block.  Also  if  the  ARRE  and/or AWRE fields are clear and a
       recoverable error is detected then the logical block in question may  be  reassigned  with
       this  utility  (otherwise  the error counter log pages will continually be incremented for
       each recovered access).

       The number of blocks held in reserve  for  the  purposes  of  REASSIGN  BLOCKS  is  vendor
       specific  and  may  well  be  limited  to  the  zone  within  the media where the original
       (defective) block lay. When this  number  is  exhausted  subsequent  invocations  of  this
       utility  may result in a sense key of hardware error and an additional sense of 'No defect
       spare location available'. The next  step  would  be  to  reformat  the  disk  (or  get  a
       replacement).

       The SBC-2 draft standard (revision 16) notes that when multiple addresses are given to the
       SCSI REASSIGN BLOCKS command and there is some failure at one of the later addresses  then
       all  addresses  prior  to  that have already be reassigned. Care should be taken in such a
       case. Re-executing the command with the same addresses will cause the earlier addresses to
       be reassigned again. At some stage the disk will run out of reserved locations.  So unless
       a large number of addresses are involved it may be safer to reassign them one address at a
       time.

EXIT STATUS

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

AUTHORS

       Written by Douglas Gilbert.

REPORTING BUGS

       Report bugs to <dgilbert at interlog dot com>.

COPYRIGHT

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

SEE ALSO

       sg_format,sginfo,sg_senddiag(all  in  sg3_utils),  sdparm(sdparm), smartmontools(internet,
       sourceforge)