Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
SG_REASSIGN(8)			    SG3_UTILS			  SG_REASSIGN(8)

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 sus-
     pected 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  ad-
     dresses  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 op-
     tions 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  ad-
	    dress 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  con-
	    tains  "#"	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 trail-
	    ing  '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, para-
	    noid  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 com-
	    mand.

     -e, --eight=0 | 1
	    when value is 1 then it sets the 'LONGLBA' flag in the command indi-
	    cating 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 para-
	    meter 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  permit-
	    ted.  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  para-
	    meter  block  length  to  2 ** 16 bytes (i.e. about 16000 4 byte ad-
	    dresses 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 re-
	    assignment	of  blocks (i.e. this utility is passive). When this op-
	    tion 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_send-
     diag  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 REAS-
     SIGN  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 ac-
     cess).

     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 subse-
     quent invocations of this utility may result in a sense key of hardware er-
     ror 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 un-
     less 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 (C) 2005-2019 Douglas Gilbert
     This software is distributed under a BSD-2-Clause license. There is NO war-
     ranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

SEE ALSO
     sg_format,sginfo,sg_senddiag(all in sg3_utils),  sdparm(sdparm),  smartmon-
     tools(internet, sourceforge)

sg3_utils-1.45			  October 2019			  SG_REASSIGN(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=sg_reassign&sektion=8&manpath=FreeBSD+Ports+15.1.quarterly>

home | help