blob: 2e8cda2d91c43c5725695861a3dba4a97abe6947 [file] [log] [blame]
.TH SG_FORMAT "8" "February 2016" "sg3_utils\-1.42" SG3_UTILS
.SH NAME
sg_format \- format, resize a SCSI disk or format a tape
.SH SYNOPSIS
.B sg_format
[\fI\-\-cmplst=\fR{0|1}] [\fI\-\-count=COUNT\fR] [\fI\-\-dcrt\fR]
[\fI\-\-early\fR] [\fI\-\-ffmy=FFMT\fR] [\fI\-\-fmtpinfo=FPI\fR]
[\fI\-\-format\fR] [\fI\-\-help\fR] [\fI\-\-ip_def\fR] [\fI\-\-long\fR]
[\fI\-\-mode=MP\fR] [\fI\-\-pfu=PFU\fR] [\fI\-\-pie=PIE\fR] [\fI\-\-pinfo\fR]
[\fI\-\-poll=PT\fR] [\fI\-\-resize\fR] [\fI\-\-rto_req\fR]
[\fI\-\-security\fR] [\fI\-\-six\fR] [\fI\-\-size=SIZE\fR] [\fI\-\-tape=FM\fR]
[\fI\-\-verbose\fR] [\fI\-\-verify\fR] [\fI\-\-version\fR] [\fI\-\-wait\fR]
\fIDEVICE\fR
.SH DESCRIPTION
.\" Add any additional description here
.PP
Not all SCSI direct access devices need to be formatted and some have vendor
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 manufacturer's
recommendation typically leaves aside a certain number of tracks, spread
across the media, for reassignment of blocks to logical block addresses
during the life of the disk.
.PP
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.
.PP
When this utility is used without options (i.e. it is only given a
\fIDEVICE\fR 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.
.PP
When this utility is used with the "\-\-format" (or "\-F") option it will
attempt to format the given DEVICE. 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 command being issued. See the NOTES
section for more information.
.PP
Protection information is optional and is made up of one or more protection
intervals, each made up of 8 bytes associated with each logical block. Four
protection types are defined with protection type 0 being no protection
intervals. See the PROTECTION INFORMATION section below for more information.
.PP
When the \fI\-\-tape=FM\fR option is given then the SCSI FORMAT MEDIUM
command is sent to the \fIDEVICE\fR. FORMAT MEDIUM is defined in SSC and
prepares a volume for use which may include partitioning the medium. See
the section below on TAPE for more information.
.SH 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.
.TP
\fB\-C\fR, \fB\-\-cmplst\fR={0|1}
sets the CMPLST ("complete list") bit in the FORMAT UNIT cdb to 0 or 1.
The default is 1 in which case the existing GLIST (grown list) is ignored.
If the value is 0 then the existing GLIST is taken into account. See the
LISTS section below. In most cases this bit should be left set; some MO
disk drives need this bit cleared.
.TP
\fB\-c\fR, \fB\-\-count\fR=\fICOUNT\fR
where \fICOUNT\fR is the number of blocks to be formatted or media to be
resized to. Can be used with either \fI\-\-format\fR or \fI\-\-resize\fR.
With \fI\-\-format\fR this option need not be given in which case it is
assumed to be zero. With \fI\-\-format\fR the interpretation of \fICOUNT\fR
is:
.br
(\fICOUNT\fR > 0) : only format the first \fICOUNT\fR blocks and READ
.br
CAPACITY will report \fICOUNT\fR blocks after format
.br
(\fICOUNT\fR = 0) and block size unchanged : use existing block count
.br
(\fICOUNT\fR = 0) and block size changed : recommended maximum block
.br
count for new block size
.br
(\fICOUNT\fR = \-1) : use recommended maximum block count
.br
(\fICOUNT\fR < \-1) : illegal
.br
With \fI\-\-resize\fR this option must be given and \fICOUNT\fR has this
interpretation:
.br
(\fICOUNT\fR > 0) : after resize READ CAPACITY will report \fICOUNT\fR
.br
blocks
.br
(\fICOUNT\fR = 0) : after resize READ CAPACITY will report 0 blocks
.br
(\fICOUNT\fR = \-1) : after resize READ CAPACITY will report its
.br
maximum number of blocks
.br
(\fICOUNT\fR < \-1) : illegal
.br
In both cases if the given \fICOUNT\fR exceeds the maximum number of
blocks (for the block size) then the disk reports an error.
See NOTES section below.
.TP
\fB\-D\fR, \fB\-\-dcrt\fR
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.
The default action of this utility (i.e. when this option is not given) is
to clear the DCRT bit thereby requesting "media certification". When the DCRT
bit is set, the FOV bit must also be set hence sg_format does that.
.TP
\fB\-e\fR, \fB\-\-early\fR
during a format operation, The default action of this utility is to poll the
disk every 60 seconds 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 option and \fI\-\-wait\fR
are mutually exclusive.
.TP
\fB\-t\fR, \fB\-\-ffmt\fR=\fIFFMT\fR
\fIFFMT\fR is placed in a field of the same name in the FORMAT UNIT cdb.
The field was introduced in SBC\-4 revision 10. The default value is 0 which
implies the former action to typically write to all blocks on the
\fIDEVICE\fR and that can take a long time.
.br
\fIFFMT\fR has values 1 and 2 for fast format with 3 being reserved
currently. The difference between 1 and 2 concerns read operations on LBAs to
which no data has been written to, since the fast format. When \fIFFMT\fR
is 1 the read operation should return "unspecified logical block data" and
complete without error. When \fIFFMT\fR is 2 the read operation should
yield check condition status with a sense key set to hardware error, medium
error or command aborted. See SBC\-4 revsion 10 section 4.35 for more
details.
.TP
\fB\-f\fR, \fB\-\-fmtpinfo\fR=\fIFPI\fR
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 revision 16 is a 2
bit field (bits 7 and 6 of byte 1 in the cdb). Prior to that 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" represent the older usage. This
option should be used in their place. See the PROTECTION INFORMATION section
below for more information.
.TP
\fB\-F\fR, \fB\-\-format\fR
issue a SCSI FORMAT UNIT command.
.B This will destroy all the data held on the media.
This option is required to change the block size of a disk. 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
before it does any damage.
.br
When used three times (or more) the preliminary MODE SENSE and SELECT
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.
.br
See NOTES section for implementation details and EXAMPLES section for typical
use.
.TP
\fB\-h\fR, \fB\-\-help\fR
print out the usage information then exit.
.TP
\fB\-I\fR, \fB\-\-ip_def\fR
sets the default Initialization Pattern. Some disks (SSDs) use this to flag
that a format should fully provision (i.e. associate a physical 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 \fI\-\-security\fR
option cannot be given.
.TP
\fB\-l\fR, \fB\-\-long\fR
the default action of this utility is to assume 32 bit logical block
addresses. With 512 byte block size this permits more than 2
terabytes (almost 2 ** 41 bytes) on a single disk. This option selects
commands and parameters that allow for 64 bit logical block addresses.
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).
.TP
\fB\-M\fR, \fB\-\-mode\fR=\fIMP\fR
\fIMP\fR is a mode page number (0 to 62 inclusive) that will be used for
reading and perhaps changing the device logical block size. The default
is 1 which is the Read\-Write Error Recovery mode page.
.TP
\fB\-P\fR, \fB\-\-pfu\fR=\fIPFU\fR
sets the "Protection Field Usage" field in the parameter block associated
with a FORMAT UNIT command to \fIPFU\fR. The default value is 0, the only
other defined value currently is 1. See the PROTECTION INFORMATION section
below for more information.
.TP
\fB\-q\fR, \fB\-\-pie\fR=\fIPIE\fR
sets the "Protection Interval Exponent" field in the parameter block
associated with a FORMAT UNIT command to \fIPIE\fR. The default value is 0.
\fIPIE\fR 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 interleaved with 4096
bytes of user data). A device may not support any non-zero values. This
field first appeared in SBC\-3 revision 18.
.TP
\fB\-p\fR, \fB\-\-pinfo\fR
this option is deprecated, use the \fI\-\-fmtpinfo=FPI\fR option instead.
If used, then it sets bit 7 of byte 1 in the FORMAT UNIT cdb and that
is equivalent to setting \fI\-\-fmtpinfo=2\fR. [So if \fI\-\-pinfo\fR is
used (plus \fI\-\-fmtpinfo=FPI\fR and \fI\-\-pfu=PFU\fR are not given or
their arguments are 0) then protection type 1 is selected.]
.TP
\fB\-x\fR, \fB\-\-poll\fR=\fIPT\fR
where \fIPT\fR is the type of poll used. If \fIPT\fR is 0 then a TEST UNIT
READY command is used, otherwise a REQUEST SENSE command is used. The
default is currently 0 but this will change to 1 in the near future. See
the NOTES sections below.
.TP
\fB\-r\fR, \fB\-\-resize\fR
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 \fI\-\-count=COUNT\fR 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 \fI\-\-format\fR
or a \fI\-\-size=SIZE\fR whose argument is different to the existing block
size.
.TP
\fB\-R\fR, \fB\-\-rto_req\fR
The option is deprecated, use the \fI\-\-fmtpinfo=FPI\fR option instead.
If used, then it sets bit 6 of byte 1 in the FORMAT UNIT cdb.
.TP
\fB\-S\fR, \fB\-\-security\fR
sets the "Security Initialization" (SI) bit in the FORMAT UNIT command'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 \fI\-\-ip_def\fR option
cannot be given.
.TP
\fB\-6\fR, \fB\-\-six\fR
Use 6 byte variants of MODE SENSE and MODE SELECT. The default action
is to use the 10 byte variants. Some MO drives need this option set
when doing a format.
.TP
\fB\-s\fR, \fB\-\-size\fR=\fISIZE\fR
where \fISIZE\fR is the block size (i.e. number of 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 command. 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 draft standard). Many SCSI disks have 512 byte sectors
by default and allow up to 16 bytes extra in a sector (i.e. 528 byte
sectors). If the given size in unacceptable with 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).
.TP
\fB\-T\fR, \fB\-\-tape\fR=\fIFM\fR
will send a FORMAT MEDIUM command to the \fIDEVICE\fR with the FORMAT field
set to \fIFM\fR. This option is used to prepare a tape (i.e. the "medium")
in a tape drive for use. Values for \fIFM\fR include 0 to do the "default"
format; 1 to partition a volume and 2 to do a default format then partition.
.TP
\fB\-v\fR, \fB\-\-verbose\fR
increase the level of verbosity, (i.e. debug output). "\-vvv" gives
a lot more debug output.
.TP
\fB\-y\fR, \fB\-\-verify\fR
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.
.TP
\fB\-V\fR, \fB\-\-version\fR
print the version string and then exit.
.TP
\fB\-w\fR, \fB\-\-wait\fR
the default format action is to set the "IMMED" bit in the FORMAT UNIT
command's (short) parameter header. If this option (i.e. \fI\-\-wait\fR) is
given then the "IMMED" bit is not set. If \fI\-\-wait\fR is given the
FORMAT UNIT command waits until the format operation completes before
returning its response. This can be many hours on large disks. This
utility sets a 15 hour timeout on such a FORMAT UNIT command! Some recent
SSDs go to the other extreme of completing a format operation in 1.5
seconds hence waiting is not an issue.
.SH LISTS
The SBC\-3 draft (revision 36) defines PLIST, CLIST, DLIST and GLIST in
section 4.13 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 Error Recovery mode page (see sdparm(8))) and use of the
SCSI REASSIGN BLOCKS command (see sg_reassign(8)).
.PP
The CMPLST bit (controlled by the \fI\-\-cmplst=\fR0|1 option) determines
whether the existing GLIST, when the format operation is invoked,
is taken into account. 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.
.PP
The sg_format utility does not permit a user to provide a defect
list (i.e. DLIST).
.SH PROTECTION INFORMATION
Protection Information (PI) is additional information held with logical
blocks so that an application and/or host bus adapter can check the
correctness of those logical blocks. PI is placed in one or more
protection intervals beside each logical block. 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". Devices with 512 byte logical block size typically have
one protection interval 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.
.PP
SBC\-3 drafts have added several "protection types" to the PI introduced 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.22 of draft SBC\-3
revision 36.
.PP
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 indicate
which protection types it supports. Given PROTECT=1 then SPT=0 implies 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
.B current
protection type of a disk can be found in the "P_TYPE" and "PROT_EN"
fields in the response of a READ CAPACITY (16) command (e.g. with
the 'sg_readcap \-\-long' utility).
.PP
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 "FMTPINFO" and "Protection Field Usage" fields in the FORMAT UNIT
command. Those fields correspond to the \fI\-\-fmtpinfo=FPI\fR and the
\fI\-\-pfu=PFU\fR options in this utility. The list below shows the four
protection types followed by the options of this utility needed to select
them:
.br
\fB0\fR : \-\-fmtpinfo=0 \-\-pfu=0
.br
\fB1\fR : \-\-fmtpinfo=2 \-\-pfu=0
.br
\fB2\fR : \-\-fmtpinfo=3 \-\-pfu=0
.br
\fB3\fR : \-\-fmtpinfo=3 \-\-pfu=1
.br
The default value of \fIFPI\fR (in \fI\-\-fmtpinfo=FPI\fR) is 0 and the
default value of \fIPFU\fR (in \fI\-\-pfu=PFU\fR) is 0. So if neither
\fI\-\-fmtpinfo=FPI\fR nor \fI\-\-pfu=PFU\fR are given then protection
type 0 (i.e. no protection information) is chosen.
.SH NOTES
The SBC\-2 standard states that the REQUEST SENSE command should be used
for obtaining progress indication when the format command is underway.
However, 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
\fI\-\-poll=PT\fR option has been added to control this.
.PP
When the \fI\-\-format\fR option is given without the \fI\-\-wait\fR option
then the SCSI FORMAT UNIT command is issued with the IMMED bit set which
causes the SCSI command to return after it has started the format operation.
The \fI\-\-early\fR option will cause sg_format to exit at that point.
Otherwise the \fIDEVICE\fR is polled every 60 seconds with TEST UNIT READY
or REQUEST SENSE commands until it reports an "all clear" (i.e. the format
operation has completed). Normally these polling commands will result in a
progress indicator (expressed as a percentage) being output to the screen.
If the user gets bored watching the progress report then sg_format process
can be terminated (e.g. with control\-C) without affecting the format
operation which continues. However a target or device reset (or a power
cycle) will probably cause the device to become "format corrupt".
.PP
When the \fI\-\-format\fR and \fI\-\-wait\fR 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 respond
leaving those commands queued behind the active format command. This may
cause a timeout in the OS driver (in a lot shorter period than 15 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 situation.
.PP
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 draft 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. different) block size. Alternatively
the READ CAPACITY command 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.
.PP
The SBC\-2 standard states that the block count can be set back to the
manufacturer'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 \fI\-\-count=\fR\-1 causes the block count to be set back to
the manufacturer's maximum recommended value. To see exactly which SCSI
commands are being executed and parameters passed add the "\-vvv" option to
the sg_format command line.
.PP
Short stroking is a technique to trade off capacity for performance. Rotating
disk performance is usually highest on the outer tracks (i.e. lower logical
block addresses) so by resizing or reformatting a disk to a smaller capacity,
average performance will usually be increased.
.PP
Other utilities may be useful in finding information associated with
formatting. 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 potentially change the now obsolete format mode page.
.PP
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.
.PP
The \fICOUNT\fR numeric argument may include a multiplicative suffix or be
given in hexadecimal. See the "NUMERIC ARGUMENTS" section in the
sg3_utils(8) man page.
.PP
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 remove all
existing data from a disk. Sanitize is more likely to be implemented on
modern disks (including SSDs) than FORMAT UNIT's security initialization
feature (see the \fI\-\-security\fR option) and in some cases much faster.
.PP
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 \fI\-\-ip_def\fR option). In either case format
operations on SSDs tend to be a lot faster than they are on hard disks with
spinning media.
.SH 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 \fI\-\-verify\fR option. The IMMED bit
is manipulated by the \fI\-\-wait\fR option in the same way it is for disks;
one difference is that if the \fI\-\-poll=PT\fR option is not given then it
defaults to \fIPT\fR of 1 which means the poll is done with REQUEST SENSE
commands.
.PP
The argument given to the \fI\-\-tape=FM\fR option is used to set the FORMAT
field. \fIFM\fR 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 \fI\-\-early\fR 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, according 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.
.PP
When \fIFM\fR is 1 or 2 then the settings in the Medium partition mode page
control the partitioning. That mode page can be viewed and modified with the
sdparm utility.
.PP
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').
.SH EXAMPLES
These examples use Linux device names. For suitable device names in
other supported Operating Systems see the sg3_utils(8) man page.
.PP
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:
.PP
# sg_format /dev/sdm
.PP
Now a simple format, leaving the block count and size as they were previously.
The FORMAT UNIT command is executed in IMMED mode and the device is polled
every 60 seconds to print out a progress indication:
.PP
# sg_format \-\-format /dev/sdm
.PP
Now the same format, but waiting (passively) until the format operation is
complete:
.PP
# sg_format \-\-format \-\-wait /dev/sdm
.PP
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:
.PP
# sg_format \-\-format \-\-size=520 /dev/sdm
.PP
Now a resize operation so that only the first 0x10000 (65536) blocks on a disk
are accessible. The remaining blocks remain unaltered.
.PP
# sg_format \-\-resize \-\-count=0x10000 /dev/sdm
.PP
Now resize the disk back to its normal (maximum) block count:
.PP
# sg_format \-\-resize \-\-count=\-1 /dev/sdm
.PP
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):
.PP
# sg_vpd \-p ei \-l /dev/sdb
.br
extended INQUIRY data VPD page:
.br
ACTIVATE_MICROCODE=0
.br
SPT=1 [protection types 1 and 2 supported]
.br
....
.PP
Format with type 1 protection:
.PP
# sg_format \-\-format \-\-fmtpinfo=2 /dev/sdm
.PP
After a successful format with type 1 protection, READ CAPACITY(16)
should show something like this:
.PP
# sg_readcap \-l /dev/sdm
.br
Read Capacity results:
.br
Protection: prot_en=1, p_type=0, p_i_exponent=0 [type 1 protection]
.br
Logical block provisioning: lbpme=0, lbprz=0
.br
....
.PP
To format with type 3 protection:
.PP
# sg_format \-\-format \-\-fmtpinfo=3 \-\-pfu=1 /dev/sdm
.PP
For the disk shown above this will probably fail because the Extended inquiry
VPD page showed only types 1 and 2 protection are supported.
.SH EXIT STATUS
The exit status of sg_format is 0 when it is successful. Otherwise see
the sg3_utils(8) man page. Unless the \fI\-\-wait\fR 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.
.SH AUTHORS
Written by Grant Grundler, James Bottomley and Douglas Gilbert.
.SH "REPORTING BUGS"
Report bugs to <dgilbert at interlog dot com>.
.SH COPYRIGHT
Copyright \(co 2005\-2016 Grant Grundler, James Bottomley and Douglas Gilbert
.br
This software is distributed under the GPL version 2. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
.SH "SEE ALSO"
.B sg_turs(8), sg_requests(8), sg_inq(8), sg_modes(8), sg_vpd(8),
.B sg_reassign(8), sg_readcap(8), sg3_utils(8),
.B sg_sanitize(8) [all in sg3_utils],
.B mt(mt-st), sdparm(8), scsiformat (old), hdparm(8)