NAME¶
scsiformat - low level format an scsi disk device
SYNOPSIS¶
scsiformat [-options...] device
DESCRIPTION¶
Low level formats the SCSI device identified by the scsi disk or generic scsi
  device node 
device. You must be root to perform this operation.
  
scsiformat will ask a simple question to get your confirmation and
  check if partitions on 
device are still mounted. Possible swap spaces
  on 
device are 
swapoff(8)'ed prior to formatting.
During formatting a file like 
/tmp/scsiformat.xx:xx:xx:xx:xxxxxxxx is
  used to hold some status information.
OPTIONS¶
scsiformat supports the following option switches:
a) Controlling a/synchronous operation¶
  - -b n
 
  - block during the format operation. This makes any display of real progress
      indicators impossible. However, cheesy SCSI devices	will need it.
      Scsiformat assumes that the operation will need about n seconds and
      provides some progress indication according to that. -b0 does not
      print any process indication, just sits and blocks until formatting
      completes.
 
  
  - Read the BUGS section below!
    
  
 
  - -T
 
  - just check for a running format command and output statistics. A file
      /tmp/scsiformat.* is used to hold the starting time of the format
      operation. If formatting completed, this file is removed by the formatting
      scsiformat call (which forks of a child just for this purpose). The
      exit state of scsiformat is true as long as the format operation is
      still in progress. A left over /tmp/scsiformat.* file will make
      scsiformat think a program still runs. It will not accept and remove files
      older than 48h nevertheless.
    
  
 
  - -t n
 
  - check progress every n seconds (default is 5). -t0 makes
      scsiformat return without displaying progress.
    
  
 
b) Interleave factor¶
  - -i n
 
  - sets the sector interleave factor to be used. Usually you should stick
      with the default -i0 which selects a vendor specific default.
    
  
 
c) Initialisation pattern¶
By default the target will initialise the formatted sectors with a vendor
  specific test pattern.
  - -I sequence of bytes in hex
 
  - the bytes given in hex characters are repeated and used to init all blocks
      on the device.
    
  
 
  - -L
 
  - The first four bytes of each logical block are set to the number of the
      logical block.
 
  - -P
 
  - The first four bytes of each physical block are set to the number of
      logical block, it will occur in.
    
  
 
c) Defect management¶
  - -e
 
  - Erase the grown defect list prior to formatting. You can issue new defects
      for the grown defect list nevertheless and media certification may add
      defects too.
    
  
 
  - -p
 
  - Ignore the vendor's primary defect list. This is not recommended as the
      vendor probably had a reason to specify these primary defects.
    
  
 
  - -c
 
  - Do not perform a media surface certification. This may speed up formatting
      but is also not recommended.
    
  
 
  - -s
 
  - Stop when unable to access primary or grown defects due to some internal
      error in the target device. When not given, formatting continues but
      returns a recovered error upon completion. (Which is probably not well
      supported by scsiformat).
    
  
 
  - -S
 
  - Erase MODE SELECT settings stored in NVRAM. These are those you can set
      with scsiinfo(8) or scsi-config(8).
    
  
 
  - -d int, ...
 
  - A comma separated list of logical blocks to mark as defect. Using this
      defect format is discouraged as there no clear concept of what a logical
      block is here because the format command may move around logical blocks
      and change the number of available blocks.
    
    The number can be preceded by 0 or 0x for octal or hexadecimal
      notation.
    
  
 
  - -D int:int:int, ...
 
  - A comma separated list of expressions of the form C:H:S specifying
      a defect at physical location Cylinder:Head:Sector. A Sector S of
      -1 marks the whole track as bad.
    
    The number can be preceded by 0 or 0x for octal or hexadecimal
      notation.
    
  
 
  - -B int:int:int, ...
 
  - A comma separated list of expressions of the from C:H:B specifying
      defects at Cylinder:Head:Bytes from Index. Again, a Bytes from Index value
      B of -1 marks the whole track as bad.
    
    The number can be preceded by 0 or 0x for octal or hexadecimal
      notation.
 
You can specify more than one of the 
-d, 
-D, 
-B options but
  you must stick to one defect format!
d) Simple partitioning¶
For your convenience, 
scsiformat allow to preset the partition table in a
  simple way which often suffices for removable medias. This is not intended as
  a replacement for 
fdisk(8) though.
  - -f arg
 
  - perform simple partitioning. -fdos sets up begin and start of the
      partition on cylinder boundaries. -ftight does use as much of the
      disk as possible (but may confuse OS's other than Linux).
    
    If you do not specify -f at all, scsiformat will not
      initialise the partition table. As it has to tell the kernel that the disk
      was reformatted and the kernel will try to to read the partition table,
      you are like to get some kernel warnings then.
    
  
 
  - -G headsxsectors
 
  - set the disk geometry (Heads x Sectors) as DOS will see it for use in the
      partition table. If you don't specify it, scsiformat will ask the kernel
      what it thinks DOS will get from the adapters BIOS. This call might fail
      or return bogus data though. A wrong setting will not affect linux, but
      other OS's and esp. DOS and the BIOS (for booting).
    
  
 
  - -y type
 
  - set the type for the partition to set. type is a two digit hex
      number. See fdisk(8),command t for a list. Defaults
      to 83 (Linux native).
    
  
 
  - -M size
 
  - Create a primary partition number 1 of maximal size sizeMB. When
      size is 0, no partition is created, and thus the partition
      table is simply initialised to be valid (but empty). If the size exceeds
      the disk capacity, a partition as large as possible is made. Defaults to
      99999.
    
  
 
e) Miscellaneous¶
  - -H
 
  - print some command line help to stdout.
 
  - -v
 
  - print version information.
    
  
 
  - -F arg
 
  - forced operation, do not ask prior to format. arg must be
      'Ene Mene Meck, und Du bist weg!'
      with proper spaces and capitalisation. (this is a German child rhyme
      kissing someone goodbye...)
    
  
 
  - -V
 
  - print some debugging information.
    
  
 
  - -X
 
  - all output is printed in numerics, useful for GUI interfaces like
      tk_scsiformat(8). Also makes all operations non blocking. (By
      forking of a child process for those scsi operations which would block).
    
  
 
  - -o
 
  - The settings of the flags -c, -p, -s, -S,
      -I, -L, -P are obeyed. If you specify one of these,
      -o is silently added. Without -o or one of these flags some
      factory default is used. Specifying -o explicitly will allow you to
      not use any of these options which might not be the default chosen by the
      target device otherwise.
    
  
 
RETURN CODES¶
Apart from the codes returned by the 
-T flag, 
scsiformat will
  generally return 1 for system errors, 2 for user errors, and 0 for successful
  operation.
BUGS¶
Old status files in 
/tmp will confuse the 
-T option. However, they
  are removed after 48 hours.
I was unable to get hold of a disk supporting querying the progress status (and
  which I could stand to lose all data on). Therefore I commented out the
  support for this from the source code using a 
BLOCKING_ONLY#define. You
  are welcome to try and make this work.
Restrictions of the 
SCSI_IOCTL_SEND_COMMAND ioctl(2) call for the
  
sd(4) device make it impossible to issue a 
FORMAT_UNIT command
  with more than 4096 bytes of arguments. This could be avoided by using the
  proper generic scsi device 
/dev/sg* instead, at least where the kernel
  is compiled to support it. Most of the time this is not needed though and thus
  I'm myself to lazy to do it.
FILES¶
/tmp/scsiformat.xx:xx:xx:xx:xxxxxxxx
 
/dev/sd*
 
/dev/sg*
SEE ALSO¶
tk_scsiformat(8), 
scsiinfo(8), 
scsi-config(8),
  
fdisk(8), 
sd(4).
AUTHOR¶
Michael Weller <eowmob@exp-math.uni-essen.de>