Provided by: scsitools_0.12-3ubuntu1_amd64 bug


       scsiformat - low level format an scsi disk device


       scsiformat [-options...] device


       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.


       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

       -I sequence of bytes in hex
              the bytes given in hex characters are repeated and used to init all blocks  on  the

       -L     The  first  four  bytes  of each logical block are set to the number of the logical

       -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

              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

   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)

       -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

       -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.


       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.


       Old status files in /tmp will confuse the -T option. However, they are  removed  after  48

       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.




       tk_scsiformat(8), scsiinfo(8), scsi-config(8), fdisk(8), sd(4).


       Michael Weller <>