diff options
author | Douglas Gilbert <dgilbert@interlog.com> | 2007-09-10 00:54:57 +0000 |
---|---|---|
committer | Douglas Gilbert <dgilbert@interlog.com> | 2007-09-10 00:54:57 +0000 |
commit | 7b165064d3d22cf8e699935bccef0e728857c4eb (patch) | |
tree | ec1fd18a51e9cef40fb333366a13796592bdceda /doc/sg_format.8 | |
parent | 6716cee810f1680cefe477e0b8e191c3321cd3b7 (diff) | |
download | sg3_utils-7b165064d3d22cf8e699935bccef0e728857c4eb.tar.gz |
rearrange files into include, src, lib and doc directories
git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@100 6180dd3e-e324-4e3e-922d-17de1ae2f315
Diffstat (limited to 'doc/sg_format.8')
-rw-r--r-- | doc/sg_format.8 | 360 |
1 files changed, 360 insertions, 0 deletions
diff --git a/doc/sg_format.8 b/doc/sg_format.8 new file mode 100644 index 00000000..be7842fe --- /dev/null +++ b/doc/sg_format.8 @@ -0,0 +1,360 @@ +.TH SG_FORMAT "8" "May 2007" "sg3_utils\-1.24" SG3_UTILS +.SH NAME +sg_format \- format or resize a SCSI disk (perhaps change its block size) +.SH SYNOPSIS +.B sg_format +[\fI\-\-cmplst=\fR0|1] [\fI\-\-count=COUNT\fR] [\fI\-\-dcrt\fR] +[\fI\-\-early\fR] [\fI\-\-format\fR] [\fI\-\-help\fR] [\fI\-\-long\fR] +[\fI\-\-pfu=PFU\fR] [\fI\-\-pinfo\fR] [\fI\-\-resize\fR] [\fI\-\-rto_req\fR] +[\fI\-\-security\fR] [\fI\-\-six\fR] [\fI\-\-size=SIZE\fR] [\fI\-\-verbose\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. That number of +blocks typically leaves aside a certain number of tracks and sectors for +reassignment of 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 (apart from a device name) +then 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 NOTES section). +.PP +Recent SBC\-3 drafts add several "protection types" to the "protection +information" introduced in the SBC\-2 standard. See the "protection +information" section (section 4.17 in draft SBC\-3 rev 8). 8 bytes of +protection information are added to each block (a 2 byte "logical block +guard" (CRC), a 2 byte "logical block application guard", and a 4 +byte "logical block reference tag"). A device that supports protection +information sets the "protect" bit in a standard INQUIRY response. +The "FMTPINFO" and "RTO_REQ" bits in the FORMAT command cdb plus +the "Protection Field Usage" in the parameter header are associated with +protection information and can be set by this utility. +.SH OPTIONS +Arguments to long options are mandatory for short options as well. +.TP +\fB\-C\fR, \fB\-\-cmplst\fR=0 | 1 +sets the CMPLST ("complete list") bit in the FORMAT 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. Active when the \fI\-\-format\fR option is given. In +most cases this bit should be left set; some MO disk drives need this bit +cleared. The SCSI to ATA Translation (SAT) standard (prior draft: sat\-r09) +requires this bit to be 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 command's parameter list header. +It will "disable certification" which is the verification step used to check +during the format process that blocks are usable. 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 +this option is active when \fI\-\-format\fR is given. The default action of +this utility is to poll the disk every 30 seconds to determine the progress +of the format operation until it is finished. When this option is given this +utility will exit "early" as soon as the format 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 cannot both be given. +.TP +\fB\-F\fR, \fB\-\-format\fR +issue a SCSI FORMAT 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 10 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. 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\-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 almost 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 is the "longlba" flag in the MODE SENSE (10) command +and READ CAPACITY (16) rather than READ CAPACITY (10). When a disk +supports "protection information" then this option may also be useful. +.TP +\fB\-P\fR, \fB\-\-pfu\fR=\fIPFU\fR +sets the "Protection Field Usage" field in the parameter block associated +with a FORMAT command to \fIPFU\fR. The default value is 0, the only other +defined value currently is 1. Used together with \fI\-\-pinfo\fR and +\fI\-\-rto_req\fR to specify the "protection type" to format the disk +to (see SBC\-3). +.TP +\fB\-p\fR, \fB\-\-pinfo\fR +instructs a format operation to add an extra 8 bytes of protection +information by setting the FMTPINFO bit in the FORMAT command cdb. Default +action is not to format with protection information. Has no action +unless \fI\-\-format\fR is given. +.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 +instructs a format to enable application client ownership of +the "logical block reference tag" field (i.e. the RTO_REQ bit in the +FORMAT cdb). The default action is to disable application client +ownership of that field. Has no action unless both \fI\-\-format\fR +and \fI\-\-pinfo\fR are given. +.TP +\fB\-S\fR, \fB\-\-security\fR +sets the "Security Initialization" (SI) bit in the FORMAT 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". +.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. This option is only active +when the \fI\-\-format\fR option is also given. 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 command being started (as +recommended in the draft standard). Recent SCSI disks usually 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 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). +.TP +\fB\-v\fR, \fB\-\-verbose\fR +increase the level of verbosity, (i.e. debug output). "\-vvv" gives +the maximum debug output. +.TP +\fB\-V\fR, \fB\-\-version\fR +print the version string and then exit. +.TP +\fB\-w\fR, \fB\-\-wait\fR +this option only has an effect when used together with the \fI\-\-format\fR +option. 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. Then the FORMAT UNIT command waits +until the format operation completes before returning its response. This +can be several hours on large disks. This utility sets a four hour timeout +on such a FORMAT UNIT command. +.SH LISTS +The SBC\-3 draft (revision 8) defines PLIST, CLIST, DLIST and GLIST in +section 4.8 on "Medium defects". Briefly, the PLIST is the "primary" +list of manufacturer detected defects, the CLIST ("certification" list) +are 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 the 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). All protection information options are +defaulted to off. +.SH NOTES +The SBC\-2 standard states that the REQUEST SENSE command should be used +for obtaining a progress indication when the format command returns prior +to the completion of the format operation. However, tests on a selection +of recent disks shows that TEST UNIT READY commands yield progress +indications (but not REQUEST SENSE commands). A new option may be required +to handle this when disks catch up. +.PP +When the \fI\-\-format\fR option is given then there is a 10 second window +during which the user is invited to abort sg_format. This is just prior the +SCSI FORMAT UNIT command being issued. If the \fI\-\-wait\fR option is not +given 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 30 seconds with +TEST UNIT READY 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 bus or device +reset (or a power cycle) may well 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 4 hours +applicable to the format command). 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 "\-vvv" to the sg_format command line. +.PP +Short stroking is a technique to trade off capacity for performance. +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 value is a number which may be followed by one of +these multiplicative suffixes: c C *1; w W *2; b B *512; k K KiB *1,024; +KB *1,000; m M MiB *1,048,576; MB *1,000,000 . This pattern continues +for "G", "T" and "P". Also a suffix of the form "x<n>" multiplies the +leading number by <n>. Alternatively numerical values can be given in +hexadecimal preceded by either "0x" or "0X" (or with a trailing "h" +or "H"). When hex numbers are given, multipliers cannot be used. +.SH EXAMPLES +First, do not alter anything but print 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: +.PP + sg_format /dev/sdm +.PP +Now a simple format, leaving the block count and size as they +were previously. The FORMAT command is executed in IMMED mode +and the device is polled every 30 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 +.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 to 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\-2007 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) [all in sg3_utils], sdparm(8), scsiformat (old) |