Man Linux: Main Page and Category List


       sg_read_long - send a SCSI READ LONG command


       sg_read_long   [--16]   [--correct]   [--help]  [--lba=LBA]  [--out=OF]
       [--pblock] [--verbose] [--version] [--xfer_len=BTL] DEVICE


       Send SCSI READ LONG command to DEVICE. The read buffer is output in hex
       and  ASCII  to  stdout or placed in a file. Note that the data returned
       includes the logical block data (typically 512 bytes for a  disk)  plus
       ECC  information  (whose  format  is proprietary) plus optionally other
       proprietary data.


       Arguments to long options are mandatory for short options as well.

       -S, --16
              uses a SCSI READ LONG(16) command. The default action is to  use
              a SCSI READ LONG(10) command. The READ LONG(10) command has a 32
              bit field for the lba while READ LONG(16) has a 64 bit field.

       -c, --correct
              sets the ’CORRCT’ bit in the SCSI READ LONG  command.  When  set
              the  data  is corrected by the ECC before being transferred back
              to this utility. The default is to leave the ’CORRCT’ bit  clear
              in which case the data is not corrected.

       -h, --help
              output the usage message then exit.

       -l, --lba=LBA
              where  LBA  is  the logical block address of the sector to read.
              Assumed to be in decimal unless prefixed with  ’0x’  (or  has  a
              trailing  ’h’). Defaults to lba 0. If the lba is larger than can
              fit in 32 bits then the --16 option should be used.

       -o, --out=OF
              instead of outputting ASCII hex to stdout, send it in binary  to
              the  file  called  OF.  If ’-’ is given for OF then the (binary)
              output is sent to stdout. Note that all  informative  and  error
              output is sent to stderr.

       -p, --pblock
              sets  the  ’PBLOCK’  bit in the SCSI READ LONG command. When set
              the physical block (plus  ECC  data)  containing  the  requested
              logical  block  address  is  read.  The  default is to leave the
              ’PBLOCK’ bit clear in which case the logical block (plus any ECC
              data) is read.

       -v, --verbose
              increase the level of verbosity, (i.e. debug output).

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

       -x, --xfer_len=BTL
              where  BTL  is the byte transfer length (default to 520). If the
              given value (or the default) does not  match  the  "long"  block
              size  of  the  device,  the  appropriate BTL is deduced from the
              error response and printed (to stderr). The  idea  is  that  the
              user will retry this utility with the correct transfer length.


       If  a  defective  block  is  found  and  its contents, if any, has been
       retrieved then "sg_reassign" could be used to  map  out  the  defective
       block.  Associated  with  such  an action the number of elements in the
       "grown" defect list could be monitored (with "sg_reassign --grown")  as
       the disk could be nearing the end of its useful lifetime.

       Various   numeric  arguments  (e.g.  LBA)  may  include  multiplicative
       suffixes or be  given  in  hexadecimal.  See  the  "NUMERIC  ARGUMENTS"
       section in the sg3_utils(8) man page.

       As  a  data  point,  Fujitsu  uses  a  54 byte ECC (per block) which is
       capable of correcting up to a single burst error or 216  bits  "on  the
       fly". [Information obtained from MAV20xxrc product manual.]


       The  exit  status of sg_read_long is 0 when it is successful. Otherwise
       see the sg3_utils(8) man page.


       Written by Douglas Gilbert.


       Report bugs to <dgilbert at interlog dot com>.


       Copyright © 2004-2007 Douglas Gilbert
       This software is distributed under the  GPL  version  2.  There  is  NO
       warranty;  not  even  for  MERCHANTABILITY  or FITNESS FOR A PARTICULAR


       sg_reassign, sg_write_long, sg_dd