Provided by: sg3-utils_1.46-3ubuntu4_amd64 bug

NAME

       sg_reassign - send SCSI REASSIGN BLOCKS command

SYNOPSIS

       sg_reassign  [--address=A,A...]  [--dummy]  [--eight=0|1]  [--grown]  [--help]  [--hex]  [--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.   The  options  are  arranged  in
       alphabetical order based on the long option name.

       -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.

       -H, --hex
              print response in hex (for -g, --grown, -p or --primary).

       -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-2019 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)

sg3_utils-1.45                                    October 2019                                    SG_REASSIGN(8)