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

  
 
  

home | help
SG_FORMAT(8)			    SG3_UTILS			    SG_FORMAT(8)

NAME
     sg_format - format, format with preset, resize SCSI disk; format tape

SYNOPSIS
     sg_format	[--cappid] [--cmplst={0|1}] [--count=COUNT] [--dcrt] [--dry-run]
     [--early]	[--ffmt=FFMT]  [--fmtmaxlba-fmtpinfo=FPI]  [--format]	[--help]
     [--ip-def]   [--long]   [--mode=MP]   [--pfu=PFU]	 [--pie=PIE]   [--pinfo]
     [--poll=PT] [--preset=ID]	[--quick]  [--resize]  [--rto_req]  [--security]
     [--six]  [--size=LB_SZ] [--tape=FM] [--timeout=SECS] [--verbose] [--verify]
     [--version] [--wait] DEVICE

DESCRIPTION
     Not all SCSI direct access devices need to be formatted and some have  ven-
     dor  specific  formatting	procedures.  SCSI  disks with rotating media are
     probably the largest group that do support a 'standard'  format  operation.
     They  are typically factory formatted to a block size of 512 bytes with the
     largest number of blocks that the	manufacturer  recommends.  The	manufac-
     turer's  recommendation  typically leaves aside a certain number of tracks,
     spread across the media, for reassignment of blocks to  logical  block  ad-
     dresses during the life of the disk.

     This  utility issues one of three SCSI format commands: FORMAT UNIT, FORMAT
     MEDIUM or FORMAT WITH PRESET. In  the  following  description,  unqualified
     sections  will  usually  be referring to the SCSI FORMAT UNIT command. Both
     FORMAT UNIT and FORMAT WITH PRESET apply to disks (or  disk-like  devices).
     The FORMAT MEDIUM command is for tapes. A SCSI INQUIRY response categorizes
     the  'Peripheral  Device Type' (PDT) of each SCSI device. This utility uses
     the PDT to check if there is a conflict between the DEVICE  and  the  given
     option  (e.g. giving the --tape=FM option when DEVICE is a normal disk). If
     there is a conflict, this utility will not continue.

     This utility can format modern SCSI  disks  and  potentially  change  their
     block  size  (if  permitted) and the block count (i.e. number of accessible
     blocks on the media also known as "resizing"). Resizing a disk to less than
     the manufacturer's recommended  block  count  is  sometimes  called  "short
     stroking"	(see NOTES section). Resizing the block count while not changing
     the block size may not require a format operation. The SBC-2 standard  (see
     www.t10.org)  has	obsoleted the "format device" mode page. Many of the low
     level details found in that mode page are now left up to the discretion  of
     the  manufacturer.  There	is a Format Status log page which reports on the
     previous successful format operation(s).

     When this utility is used without options (i.e. it is only given  a  DEVICE
     argument)	it  prints  out  the existing block size and block count derived
     from two sources. These two sources are a block descriptor in the	response
     to  a  MODE SENSE command and the response to a READ CAPACITY command.  The
     reason for this double check is to detect a "format corrupt" state (see the
     NOTES section). This usage will not modify the disk.

     When this utility is used with either --format, --preset=ID  or  --tape=FM,
     it  will  attempt to format the given DEVICE. In the absence of the --quick
     option there is a 15 second pause during which time  the  user  is  invited
     thrice  (5  seconds  apart)  to abort sg_format. This occurs just prior the
     SCSI FORMAT UNIT, FORMAT WITH PRESET or FORMAT MEDIUM command being issued.
     See the NOTES section for more information.

     Protection information (PI) is optional and is made up of one or more  pro-
     tection intervals, each made up of 8 bytes associated with a logical block.
     When  PI  is active each logical block will have 1, 2, 4, 8, etc protection
     intervals (i.e. a power of two), interleaved with (and following) the  user
     data to which they refer. Four protection types are defined with protection
     type  0  being no protection intervals. See the PROTECTION INFORMATION sec-
     tion below for more information.

     When the --tape=FM option is given then the SCSI FORMAT MEDIUM  command  is
     sent  to  the  DEVICE. FORMAT MEDIUM is defined in the SSC documents at T10
     and prepares a volume for use. That may include  partitioning  the  medium.
     See the section below on TAPE for more information.

     The  FORMAT WITH PRESET was added in draft SBC-4 revision 18. A preset pat-
     tern, selected by the PRESET IDENTIFIER field (--id=FWPID), is  written  to
     the  disk.  See  the FORMAT PRESETS VPD page (0xb8) for a list of available
     Format preset identifiers and their associated data.

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, --cappid
	    this option sets the CAPPID bit in the MODE SELECT header  which  is
	    part  of  that  command's  parameter  list. A MODE SELECT command is
	    needed when the COUNT (i.e.  number  of  logical  blocks)  is  being
	    changed.  The MODE SELECT command needs to complete successfully be-
	    fore FORMAT UNIT command is performed. The CAPPID bit (introduced in
	    SBC-5 revision 4) is closely related to the Capacity/Product identi-
	    fication mapping VPD page (0xba).  If that VPD page is not	present,
	    then  the CAPPID bit is not set unless the option is given twice. If
	    the CAPPID bit is not supported a sense key of illegal request  with
	    an	additional  sense of "invalid field in parameter list" should be
	    reported.
	    If successful, this option may lead to the standard INQUIRY response
	    Product identification field being changed. If so, a Unit  attention
	    condition  is  set	with  an  additional  sense of "Inquiry data has
	    changed".

     -C, --cmplst={0|1}
	    sets the CMPLST ("complete list") bit in the FORMAT UNIT cdb to 0 or
	    1.	If the value is 0 then the existing GLIST (grown list) is  taken
	    into account.  If the value is 1 then the existing GLIST is ignored.
	    CMPLST  defaults to 1 apart from when the --ffmt=FFMT option's value
	    is non-zero in which case CMPLST defaults to 0. See the  LISTS  sec-
	    tion  below.  In  most  cases this bit should be left at its default
	    value.

     -c, --count=COUNT
	    where COUNT is the number of blocks to be formatted or media  to  be
	    resized  to.  Can  be  used  with either --format or --resize.  With
	    --format this option need not be given in which case it  is  assumed
	    to be zero.
	    With --format the interpretation of COUNT is:
	      (COUNT > 0) : only format the first COUNT blocks and READ CAPACITY
	    will report COUNT blocks after format
	      (COUNT = 0) and block size unchanged : use existing block count
	      (COUNT  =  0)  and  block size changed : recommended maximum block
	    count for new block size
	      (COUNT = -1) : use recommended maximum block count
	      (COUNT < -1) : illegal With --resize this option must be given and
	    COUNT has this interpretation:
	      (COUNT > 0) : after resize READ CAPACITY will report COUNT blocks
	      (COUNT = 0) : after resize READ CAPACITY will report 0 blocks
	      (COUNT = -1) : after resize READ CAPACITY will report its  maximum
	    number of blocks
	      (COUNT < -1) : illegal
	    In	both  cases  if  the  given  COUNT exceeds the maximum number of
	    blocks (for the block size) then the disk  reports	an  error.   See
	    NOTES section below.

     -D, --dcrt
	    this option sets the DCRT bit in the FORMAT UNIT command's parameter
	    list header. It will "disable certification". Certification verifies
	    that  blocks are usable during the format process. Using this option
	    may speed the format but --ffmt=FFMT, if available,  would	probably
	    be better. The default action of this utility (i.e. when this option
	    is	not  given)  is  to clear the DCRT bit thereby requesting "media
	    certification" (also unless another option needs  it,  the	FOV  bit
	    will be cleared). When the DCRT bit is set, the FOV bit must also be
	    set hence sg_format does that.
	    If	this  option  is  given  twice	then certification is enabled by
	    clearing the DCRT bit and setting the FOV bit. Both these  bits  are
	    found in the parameter list associated with the FORMAT UNIT cdb.

     -d, --dry-run
	    this  option will parse the command line, do all the preparation but
	    bypass the actual FORMAT UNIT, FORMAT WITH PRESET or  FORMAT  MEDIUM
	    command. Also if the options would otherwise cause the logical block
	    size  to  change, then the MODE SELECT command that would do that is
	    also bypassed when the dry run option is given.

     -e, --early
	    during a format operation, The default action of this utility is  to
	    poll  the  disk  every  60	seconds  (or every 10 seconds if FFMT is
	    non-zero) to determine the progress of the format operation until it
	    is finished. When this  option  is	given  this  utility  will  exit
	    "early", that is as soon as the format operation has commenced. Then
	    the  user  can  monitor the progress of the ongoing format operation
	    with other utilities (e.g. sg_turs(8) or sg_requests(8)).  This  op-
	    tion and --wait are mutually exclusive.

     -t, --ffmt=FFMT
	    FFMT (fast format) is placed in a field of the same name in the FOR-
	    MAT UNIT cdb. The field was introduced in SBC-4 revision 10. The de-
	    fault  value is 0 which implies the former action which is typically
	    to overwrite all blocks on the DEVICE. That can  take  a  long  time
	    (e.g.  with  hard  disks  over 10 TB in size that can be days). With
	    FFMT set that time may be reduced to minutes or less. So it is worth
	    trying if it is available.
	    FFMT has values 1 and 2 for fast format with 3 being  reserved  cur-
	    rently.  These  two  values  include  this	description: "The device
	    server initializes the medium ...  without	overwriting  the  medium
	    (i.e.  resources  for managing medium access are initialized and the
	    medium is not written)".  The difference between 1	and  2	concerns
	    read  operations on LBAs to which no data has been written to, after
	    the fast format. When FFMT is 1 the  read  operation  should  return
	    "unspecified  logical  block  data" and complete without error. When
	    FFMT is 2 the read operation may yield check condition status with a
	    sense key set to hardware error, medium error  or  command	aborted.
	    See draft SBC-4 revision 16 section 4.34 for more details.

     -b, --fmtmaxlba
	    This  option  is only active if it is given together with the --pre-
	    set=ID option. If so it sets the FMTMAXLBA field in the FORMAT  WITH
	    PRESET command.

     -f, --fmtpinfo=FPI
	    sets  the FMTPINFO field in the FORMAT UNIT cdb to a value between 0
	    and 3.  The default value is 0. The FMTPINFO field from SBC-3  revi-
	    sion  16 is a 2 bit field (bits 7 and 6 of byte 1 in the cdb). Prior
	    to that revision it was a single bit field (bit 7 of byte 1  in  the
	    cdb) and there was an accompanying bit called RTO_REQ (bit 6 of byte
	    1 in the cdb). The deprecated options "--pinfo" and "--rto-req" rep-
	    resent  the  older usage. This option should be used in their place.
	    See the PROTECTION INFORMATION section below for more information.

     -F, --format
	    issue one of the three SCSI "format" commands. In the absence of the
	    --preset=ID and --tape=FM options, the SCSI FORMAT UNIT  command  is
	    issued.  These commands will destroy all the data held on the media.
	    This  option  is required to change the block size of a disk. In the
	    absence of the --quick option, the user is given a 15  second  count
	    down to ponder the wisdom of doing this, during which time control-C
	    (amongst  other  Unix commands) can be used to kill this process be-
	    fore it does any damage.
	    When used three times (or more) the preliminary MODE SENSE	and  SE-
	    LECT  commands  are  bypassed,  leaving only the initial INQUIRY and
	    FORMAT UNIT commands. This is for emergency use (e.g. when the  MODE
	    SENSE/SELECT commands are not working) and cannot change the logical
	    block size.
	    Host  managed zoned devices (e.g. many zoned disks) have a different
	    PDT compared to other disks but can still be formatted  as	if  they
	    were 'normal' disks.
	    See  NOTES	section  for implementation details and EXAMPLES section
	    for typical use.

     -h, --help
	    print out the usage information then exit.

     -I, --ip-def
	    sets the default Initialization Pattern. Some disks (SSDs) use  this
	    to flag that a format should fully provision (i.e. associate a phys-
	    ical  block  with  every logical block). The same disks (SSDs) might
	    thin provision if this option is not given. If this option is  given
	    then  the  --security  option cannot be given. Also accepts --ip_def
	    for this option.

     -l, --long
	    the default action of this utility is to assume 32 bit logical block
	    addresses. With 512 byte block size this permits more  than  2  ter-
	    abytes  (almost 2 ** 41 bytes) on a single disk. This option selects
	    commands and parameters that allow for  64	bit  logical  block  ad-
	    dresses.   Specifically  this  option sets the "longlba" flag in the
	    MODE SENSE (10) command and uses READ CAPACITY (16) rather than READ
	    CAPACITY (10). If this option is not given and READ CAPACITY (10) or
	    MODE SELECT detects a disk the needs more than 32 bits to  represent
	    its  logical  blocks then it is set internally. This option does not
	    set the LONGLIST bit in the FORMAT UNIT command. The LONGLIST bit is
	    set as required depending other parameters (e.g. when '--pie=PIE' is
	    greater than zero).

     -M, --mode=MP
	    MP is a mode page number (0 to 62 inclusive) that will be  used  for
	    reading  and perhaps changing the device logical block size. The de-
	    fault is 1 which is the Read-Write Error Recovery mode page.
	    Preferably the chosen (or default)	mode  page  should  be	saveable
	    (i.e.   accept  the  SP bit set in the MODE SELECT command used when
	    the logical block size is being changed).  Recent  version	of  this
	    utility  will  retry  a MODE SELECT if the SP=1 variant fails with a
	    sense key of ILLEGAL REQUEST.  That retry will use the same MODE SE-
	    LECT command but with SP=0 .

     -P, --pfu=PFU
	    sets the "Protection Field Usage" field in the parameter block asso-
	    ciated with a FORMAT UNIT command to PFU. The default  value  is  0,
	    the  only other defined value currently is 1. See the PROTECTION IN-
	    FORMATION section below for more information.

     -q, --pie=PIE
	    sets the "Protection Interval Exponent" field in the parameter block
	    associated with a FORMAT UNIT command to PIE. The default  value  is
	    0.	 PIE  can  only  be non-zero with protection types 2 and 3.  The
	    value of 0 is typical for 512 byte blocks; with 4096 byte  blocks  a
	    value  of  3  may be appropriate (i.e. 8 protection intervals inter-
	    leaved with 4096 bytes of user data). A device may not  support  any
	    non-zero values. This field first appeared in SBC-3 revision 18.

     -p, --pinfo
	    this  option  is  deprecated, use the --fmtpinfo=FPI option instead.
	    If used, then it sets bit 7 of byte 1 in the  FORMAT  UNIT	cdb  and
	    that  is  equivalent to setting --fmtpinfo=2. [So if --pinfo is used
	    (plus --fmtpinfo=FPI and --pfu=PFU are not given or their  arguments
	    are 0) then protection type 1 is selected.]

     -x, --poll=PT
	    where PT is the type of poll used. If PT is 0 then a TEST UNIT READY
	    command  is used, otherwise a REQUEST SENSE command is used. The de-
	    fault is currently 0 but this will change to 1 in the  near  future.
	    See the NOTES sections below.

     -E, --preset=ID
	    this  option instructs this utility to issue a SCSI FORMAT WITH PRE-
	    SET command. The PRESET IDENTIFIER field in that cdb is set  to  ID.
	    The  IMMED field in that cdb is also set unless the --wait option is
	    also given, in which case it is cleared.

     -Q, --quick
	    the default action (i.e. when the option is not given)  is	to  give
	    the  user  15  seconds to reconsider doing a format operation on the
	    DEVICE.  When this option is given that step  (i.e.  the  15  second
	    warning period) is skipped.

     -r, --resize
	    rather  than format the disk, it can be resized. This means changing
	    the number of blocks on the device reported  by  the  READ	CAPACITY
	    command.   This option should be used with the --count=COUNT option.
	    The contents of all logical blocks on  the	media  remain  unchanged
	    when  this	option is used. This means that any resize operation can
	    be reversed. This option cannot be used together with either  --for-
	    mat  or  a	--size=LB_SZ whose argument is different to the existing
	    block size.

     -R, --rto_req
	    The option is deprecated, use the --fmtpinfo=FPI option instead.  If
	    used, then it sets bit 6 of byte 1 in the FORMAT UNIT cdb.

     -S, --security
	    sets the "Security Initialization" (SI) bit in the FORMAT UNIT  com-
	    mand's  initialization pattern descriptor within the parameter list.
	    According to SBC-3 the  default  initialization  pattern  "shall  be
	    written  using  a  security  erasure write technique". See the NOTES
	    section on the SCSI SANITIZE command. If this option is  given  then
	    the --ip_def option cannot be given.

     -6, --six
	    Use  6  byte variants of MODE SENSE and MODE SELECT. The default ac-
	    tion is to use the 10 byte variants. Some MO drives need this option
	    set when doing a format.

     -s, --size=LB_SZ
	    where LB_SZ is the logical block size (i.e. number of user bytes  in
	    each  block)  to format the device to. The default value is whatever
	    is currently reported by the block descriptor in a MODE  SENSE  com-
	    mand.  If  the block size given by this option is different from the
	    current value then a MODE SELECT command is used to change it  prior
	    to	the FORMAT UNIT command being started (as recommended in the SBC
	    standards). Some SCSI disks have 512 byte logical blocks by  default
	    and  allow	an  alternate  logical	block size of 4096 bytes. If the
	    given size in unacceptable to the  disk,  most  likely  an	"Invalid
	    field in parameter list" message will appear in sense data (requires
	    the use of '-v' to decode sense data).
	    Note  that formatting a disk to add or remove protection information
	    is not regarded as a change to its logical block size so this option
	    should not be used.

     -T, --tape=FM
	    will send a FORMAT MEDIUM command to  the  DEVICE  with  its  FORMAT
	    field  set	to  FM.  This option is used to prepare a tape (i.e. the
	    "medium") in a tape drive for use. Values for FM include 0 to do the
	    "default" format; 1 to partition a volume and 2 to do a default for-
	    mat then partition.

     -m, --timeout=SECS
	    where SECS is the FORMAT UNIT, FORMAT WITH PRESET or  FORMAT  MEDIUM
	    command timeout in seconds. SECS will only be used if it exceeds the
	    internal  timeout  which  is  20 seconds if the IMMED bit is set and
	    72000 seconds (20 hours) or higher if the IMMED bit is not	set.  If
	    the  disk  size  exceeds 4 TB then the timeout value is increased to
	    144000 seconds (40 hours).	And if it is greater than 8 TB then  the
	    timeout  value  is	increased  to  288000 seconds (80 hours). If the
	    timeout is exceeded then the operating system will	typically  abort
	    the  command.  Aborting  a	command  may escalate to a LUN reset (or
	    worse). A timeout may also leave the disk or tape  format  operation
	    incomplete. And that may result in the disk or tape being in a "for-
	    mat corrupt" state requiring another format to remedy the situation.
	    So	for various reasons command timeouts are best avoided. An alter-
	    nate long option form is --tmo=SECS.

     -v, --verbose
	    increase the level of verbosity, (i.e. debug output). "-vvv" gives a
	    lot more debug output.

     -y, --verify
	    set the VERIFY bit in the FORMAT MEDIUM cdb. The default is that the
	    VERIFY bit is clear. This option is only appropriate for tapes.

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

     -w, --wait
	    the default format action is to set the "IMMED" bit  in  the  FORMAT
	    UNIT  command's  (short)  parameter  header.  If  this  option (i.e.
	    --wait) is given then the "IMMED" bit is not set. If --wait is given
	    then the FORMAT UNIT, FORMAT WITH PRESET or  FORMAT  MEDIUM  command
	    waits  until the format operation completes before returning its re-
	    sponse. This can be many hours  on	large  disks.  See  the  --time-
	    out=SECS option.
	    Alternatively  this  option  may  be  useful when used together with
	    --ffmt=FFMT (and FFMT greater than 0) since the fast format may only
	    be a matter of seconds.

LISTS
     The SBC-3 draft (revision 20) defines PLIST, CLIST, DLIST and GLIST in sec-
     tion 4.10 on "Medium defects". Briefly, the PLIST is the "primary" list  of
     manufacturer  detected  defects,  the CLIST ("certification" list) contains
     those detected during the format operation, the DLIST is a list of  defects
     that  can	be  given  to  the format operation. The GLIST is the grown list
     which starts in the format process as CLIST+DLIST and can "grow" later  due
     to automatic reallocation (see the ARRE and AWRE bits in the Read-Write Er-
     ror Recovery mode page (see sdparm(8))) and use of the SCSI REASSIGN BLOCKS
     command (see sg_reassign(8)).

     By the SBC-3 standard (following draft revision 36) the CLIST and DLIST had
     been  removed,  leaving  PLIST and GLIST. Only PLIST and GLIST are found in
     the SBC-4 drafts.

     The CMPLST bit (controlled by the --cmplst=0|1 option)  determines  whether
     the existing GLIST, when the format operation is invoked, is taken into ac-
     count.  The sg_format utility sets the FOV bit to zero which causes DPRY=0,
     so the PLIST is taken into account, and DCRT=0, so the CLIST  is  generated
     and used during the format process.

     The sg_format utility does not permit a user to provide a defect list (i.e.
     DLIST).

PROTECTION INFORMATION
     Protection  Information  (PI)  is	additional information held with logical
     blocks so that an application and/or host bus adapter can	check  the  cor-
     rectness  of  those  logical blocks. PI is placed in one or more protection
     intervals interleaved in each logical block. Each protection interval  fol-
     lows  the	user  data  to which it refers. A protection interval contains 8
     bytes made up of a 2 byte "logical block guard" (CRC), a  2  byte	"logical
     block  application  guard", and a 4 byte "logical block reference tag". De-
     vices with 512 byte logical block size typically have one protection inter-
     val appended, making its logical block data 520 bytes  long.  Devices  with
     4096  byte  logical  block  size  often  have 8 protection intervals spread
     across its logical block data for a total size of 4160 bytes. Note that for
     all other purposes the logical block size is considered to be 512 and  4096
     bytes respectively.

     The  SBC-3  standard have added several "protection types" to the PI intro-
     duced in the SBC-2 standard. SBC-3 defines 4 protection types (types  0  to
     3)  with  protection type 0 meaning no PI is maintained. While a device may
     support one or more protection types, it can only be formatted  with  1  of
     the  4. To change a device's protection type, it must be re-formatted.  For
     more information see the Protection Information in section  4.21  of  draft
     SBC-4 revision 16.

     A device that supports PI information (i.e. supports one or more protection
     types  1, 2 and 3) sets the "PROTECT" bit in its standard INQUIRY response.
     It also sets the SPT field in the EXTENDED INQUIRY VPD page response to in-
     dicate which protection types it supports. Given PROTECT=1 then  SPT=0  im-
     plies the device supports PI type 1 only, SPT=1 implies the device supports
     PI  types 1 and 2, and various other non-obvious mappings up to SPT=7 which
     implies protection types 1, 2 and 3 are supported. The  current  protection
     type of a disk can be found in the "P_TYPE" and "PROT_EN" fields in the re-
     sponse  of  a READ CAPACITY (16) command (e.g. with the 'sg_readcap --long'
     utility).

     Given that a device supports a particular protection type, a user can  then
     choose  to  format that disk with that protection type by setting the "FMT-
     PINFO" and "Protection Field Usage" fields  in  the  FORMAT  UNIT	command.
     Those  fields correspond to the --fmtpinfo=FPI and the --pfu=PFU options in
     this utility. The list below shows the four protection  types  followed  by
     the options of this utility needed to select them:
	 0 : --fmtpinfo=0 --pfu=0
	 1 : --fmtpinfo=2 --pfu=0
	 2 : --fmtpinfo=3 --pfu=0
	 3 : --fmtpinfo=3 --pfu=1
     The  default value of FPI (in --fmtpinfo=FPI) is 0 and the default value of
     PFU (in --pfu=PFU) is 0. So if neither  --fmtpinfo=FPI  nor  --pfu=PFU  are
     given then protection type 0 (i.e. no protection information) is chosen.

NOTES
     After a format that changes the logical block size or the number of logical
     blocks on a disk, the operating system may need to be told to re-initialize
     its setting for that disk. In Linux that can be done with:
	 echo 1 > /sys/block/sd{letter(s)}/device/rescan
     where  "letter(s)"  will  be  between  'a' and 'zzz'. The lsscsi utility in
     Linux can be used to check the various namings of a disk.

     The SBC-2 standard states that the REQUEST SENSE command should be used for
     obtaining progress indication when the format command  is	underway.   How-
     ever,  tests  on  a  selection of disks shows that TEST UNIT READY commands
     yield progress indications (but not REQUEST SENSE commands). So the current
     version of this utility defaults to using TEST UNIT READY commands to  poll
     the  disk	to find out the progress of the format. The --poll=PT option has
     been added to control this.

     When the --format, --preset=ID or --tape=FM option  is  given  without  the
     --wait  option then the corresponding SCSI command is issued with the IMMED
     bit set which causes the SCSI command to return after it  has  started  the
     format  operation.  The --early option will cause sg_format to exit at that
     point. Otherwise the DEVICE is polled every 60 seconds or every 10  seconds
     if FFMT is non-zero. The poll is with TEST UNIT READY or REQUEST SENSE com-
     mands  until one reports an "all clear" (i.e. the format operation has com-
     pleted). Normally these polling commands will result in a progress  indica-
     tor  (expressed  as  a  percentage) being output to the screen. If the user
     gets bored watching the progress report then sg_format process can be  ter-
     minated  (e.g. with control-C) without affecting the format operation which
     continues. However a target or device reset (or a power cycle) will  proba-
     bly cause the format to cease and the DEVICE to become "format corrupt".

     When the --format (--preset=ID or --tape) and --wait options are both given
     then  this utility may take a long time to return. In this case care should
     be taken not to send any other SCSI commands to the disk as it may not  re-
     spond  leaving those commands queued behind the active format command. This
     may cause a timeout in the OS driver (in a lot shorter period than 20 hours
     applicable to some format operations). This may result in the OS  resetting
     the  disk	leaving the format operation incomplete. This may leave the disk
     in a "format corrupt" state requiring another format to remedy  the  situa-
     tion.  Modern SCSI devices should yield a "not ready" sense key with an ad-
     ditional sense indicating a format is in progress. With older  devices  the
     user should take precautions that nothing attempts to access a device while
     it is being formatted. Unmounting in mounted file systems on a DEVICE prior
     to calling this utility is strongly advised.

     When  the block size (i.e. the number of bytes in each block) is changed on
     a disk two SCSI commands must be sent: a MODE SELECT to  change  the  block
     size  followed by a FORMAT command. If the MODE SELECT command succeeds and
     the FORMAT fails then the disk may be in a state that  the  standard  calls
     "format corrupt". A block descriptor in a subsequent MODE SENSE will report
     the  requested new block size while a READ CAPACITY command will report the
     existing (i.e. previous) block size. Alternatively the READ  CAPACITY  com-
     mand  may	fail, reporting the device is not ready, potentially requiring a
     format. The solution to this situation is to do a format  again  (and  this
     time the new block size does not have to be given) or change the block size
     back to the original size.

     The SBC-2 standard states that the block count can be set back to the manu-
     facturer's maximum recommended value in a format or resize operation.  This
     can  be done by placing an address of 0xffffffff (or the 64 bit equivalent)
     in the appropriate block descriptor field to  a  MODE  SELECT  command.  In
     signed  (two's  complement) arithmetic that value corresponds to '-1'. So a
     --count=-1 causes the block count to be set back to the manufacturer's max-
     imum recommended value. To see exactly which SCSI commands are  being  exe-
     cuted  and parameters passed add the "-vvv" option to the sg_format command
     line.

     The FMTDATA field shown in the FORMAT UNIT cdb does not have a  correspond-
     ing  option in this utility. When set in the cdb it indicates an additional
     parameter list will be sent to the DEVICE along with the cdb. It is set  as
     required, basically when any field in the parameter list header is set.

     Short stroking is a technique to trade off capacity for performance on hard
     disks.  "Hard"  disk  is  often used to mean a storage device with spinning
     platters which contain the user data. Solid State Disk (SSD) is  the  newer
     form of storage device that contains no moving parts. Hard disk performance
     is usually highest on the outer tracks (usually the lower logical block ad-
     dresses) so by resizing or reformatting a disk to a smaller capacity, aver-
     age performance will usually be increased.

     Other  utilities  may be useful in finding information associated with for-
     matting. These include sg_inq(8)  to  fetch  standard  INQUIRY  information
     (e.g. the PROTECT bit) and to fetch the EXTENDED INQUIRY VPD page (e.g. RTO
     and  GRD_CHK  bits). The sdparm(8) utility can be used to access and poten-
     tially change the now obsolete format mode page.

     scsiformat is another utility available  for  formatting  SCSI  disks  with
     Linux.  It dates from 1997 (most recent update) and may be useful for disks
     whose firmware is of that vintage.

     The COUNT numeric argument may include a multiplicative suffix or be  given
     in hexadecimal. See the "NUMERIC ARGUMENTS" section in the sg3_utils(8) man
     page.

     The  SCSI	SANITIZE  command  was	introduced  in	SBC-3 revision 27. It is
     closely related to the ATA sanitize disk feature set and can be used to re-
     move all existing data from a disk. Sanitize is more likely  to  be  imple-
     mented  on  modern  disks (including SSDs) than FORMAT UNIT's security ini-
     tialization feature (see the --security option)  and  in  some  cases  much
     faster.

     SSDs that support thin provisioning will typically unmap all logical blocks
     during  a	format.  The reason is to improve the SSD's endurance. Also thin
     provisioned formats typically complete faster than fully  provisioned  ones
     on  the  same  disk (see the --ip_def option). In either case format opera-
     tions on SSDs tend to be a lot faster than they  are  on  hard  disks  with
     spinning media.

     Host  managed  zoned  devices (aka zoned disks) have a different Peripheral
     Device Type [PDT=20 or 0x14] from normal disks. They can be considered as a
     superset of normal disks (e.g. SSDs and hard disks) at least from the  per-
     spective of the number of SCSI commands they support. Typically they can be
     formatted	just  like  other SCSI disks. They have their own T10 standards:
     ZBC standard (INCITS 536-2016) and draft ZBC-2.
     Two other zoned disk variants ("host aware" and "Domains and  Realms")  use
     the same PDT as other disks (i.e. PDT=0) and can be formatted by this util-
     ity as if they were normal disks.

TAPE
     Tape  system  use	a variant of the FORMAT UNIT command used on disks. Tape
     systems use the FORMAT MEDIUM command which  is  simpler  with  only  three
     fields  in  the  cdb typically used. Apart from sharing the same opcode the
     cdbs of FORMAT UNIT and FORMAT MEDIUM are quite different. FORMAT	MEDIUM's
     fields are VERIFY, IMMED and FORMAT (with TRANSFER LENGTH always set to 0).
     The  VERIFY bit field is set with the --verify option. The IMMED bit is ma-
     nipulated by the --wait option in the same way it is for disks; one differ-
     ence is that if the --poll=PT option is not given then it defaults to PT of
     1 which means the poll is done with REQUEST SENSE commands.

     The argument given to the --tape=FM option is used to set the FORMAT field.
     FM can take values from "-1" to "15" where "-1" (the default)  means  don't
     do  a  tape  format; value "8" to "15" are for vendor specific formats. The
     --early option may also be used to set the IMMED bit  and	then  exit  this
     utility  (rather than poll periodically until it is finished). In this case
     the tape drive will still be busy doing the format for some time  but,  ac-
     cording to T10, should still respond in full to the INQUIRY and REPORT LUNS
     commands.	Other  commands  (including  REQUEST  SENSE) should yield a "not
     ready" sense key with an additional sense code of "Logical unit not  ready,
     format  in  progress". Additionally REQUEST SENSE should contain a progress
     indication in its sense data.

     When FM is 1 or 2 then the settings in the Medium partition mode page  con-
     trol  the	partitioning. That mode page can be viewed and modified with the
     sdparm utility.

     Prior to invoking this utility the tape may need to be  positioned  to  the
     beginning	of  partition 0. In Linux that can typically be done with the mt
     utility (e.g. 'mt -f /dev/st0 rewind').

EXAMPLES
     These examples use Linux device names. For suitable device names  in  other
     supported Operating Systems see the sg3_utils(8) man page.

     In  the  first  example  below simply find out the existing block count and
     size derived from two sources: a block descriptor in a MODE SELECT  command
     response  and from the response of a READ CAPACITY commands. No changes are
     made:

	# sg_format /dev/sdm

     Now a simple format, leaving the block count and size as they  were  previ-
     ously.  The FORMAT UNIT command is executed in IMMED mode and the device is
     polled every 60 seconds to print out a progress indication:

	# sg_format --format /dev/sdm

     Now  the same format, but waiting (passively) until the format operation is
     complete:

	# sg_format --format --wait /dev/sdm

     Next is a format in which the block size is changed to 520  bytes	and  the
     block  count  is  set  to	the manufacturer's maximum value (for that block
     size). Note, not all disks support changing the block size:

	# sg_format --format --size=520 /dev/sdm

     Now a resize operation so that only the first 0x10000 (65536) blocks  on  a
     disk are accessible. The remaining blocks remain unaltered.

	# sg_format --resize --count=0x10000 /dev/sdm

     Now resize the disk back to its normal (maximum) block count:

	# sg_format --resize --count=-1 /dev/sdm

     One  reason  to  format a SCSI disk is to add protection information. First
     check which protection types are supported by a disk (by checking	the  SPT
     field in the Extended inquiry VPD page together with the Protect bit in the
     standard inquiry response):

	# sg_vpd -p ei -l /dev/sdb
	extended INQUIRY data VPD page:
	  ACTIVATE_MICROCODE=0
	  SPT=1 [protection types 1 and 2 supported]
	  ....

     Format with type 1 protection:

	# sg_format --format --fmtpinfo=2 /dev/sdm

     After  a successful format with type 1 protection, READ CAPACITY(16) should
     show something like this:

	# sg_readcap -l /dev/sdm
	Read Capacity results:
	   Protection: prot_en=1, p_type=0, p_i_exponent=0 [type 1 protection]
	   Logical block provisioning: lbpme=0, lbprz=0
	   ....

     To format with type 3 protection:

	# sg_format --format --fmtpinfo=3 --pfu=1 /dev/sdm

     For the disk shown above this will probably fail because the  Extended  in-
     quiry VPD page showed only types 1 and 2 protection are supported.

     Here  are	examples of using fast format (FFMT field in FORMAT UNIT cdb) to
     quickly switch between 512 and 4096 byte logical block  size.  Assume  disk
     starts  with  4096  byte logical block size and all important data has been
     backed up.

	# sg_format --format --ffmt=1 --size=512 /dev/sdd

     Now /dev/sdd should have 512 byte logical block  size.  And  to  switch  it
     back:

	# sg_format --format --ffmt=1 --size=4096 /dev/sdd

     Since fast formats can be very quick (a matter of seconds) using the --wait
     option may be appropriate.

     And to use the Format with preset command this invocation could be used:

	# sg_format --preset=1 --fmtmaxlba /dev/sdd

     The FORMAT PRESETS VPD page (0xb8) should be consulted to check that Preset
     identifier  0x1  is  there  and has the expected format (i.e. "default host
     aware zoned block device model with 512 bytes of user data in each  logical
     block").  That VPD page can be viewed with the sg_vpd utility.

EXIT STATUS
     The  exit status of sg_format is 0 when it is successful. Otherwise see the
     sg3_utils(8) man page. Unless the --wait option is given, the  exit  status
     may  not  reflect the success of otherwise of the format.	Using sg_turs(8)
     and sg_readcap(8) after the format operation may be wise.

     The Unix convention is that "no news is good news" but that can  be  a  bit
     unnerving after an operation like format, especially if it finishes quickly
     (i.e.  before the first progress poll is sent). Giving the --verbose option
     once should supply enough additional output to settle those nerves.

AUTHORS
     Written by Grant Grundler, James Bottomley and Douglas Gilbert.

REPORTING BUGS
     Report bugs to <dgilbert at interlog dot com>.

COPYRIGHT
     Copyright (C) 2005-2023 Grant Grundler, James Bottomley and Douglas Gilbert
     This software is distributed under the GPL version 2. There is NO warranty;
     not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

SEE ALSO
     sg_turs(8), sg_requests(8),  sg_inq(8),  sg_modes(8),  sg_vpd(8),	sg_reas-
     sign(8),  sg_readcap(8),  sg3_utils(8),  sg_sanitize(8) [all in sg3_utils],
     lsscsi(8), mt(mt-st), sdparm(8), scsiformat (old), hdparm(8)

sg3_utils-1.48			    May 2023			    SG_FORMAT(8)

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

home | help