Go to main content

man pages section 8: System Administration Commands

Exit Print View

Updated: Wednesday, July 27, 2022

sg_get_lba_status (8)


sg_get_lba_status - send SCSI GET LBA STATUS(16 or 32) command


sg_get_lba_status  [--16]  [--32]  [--brief] [--element-id=EI] [--help]
[--hex]  [--inhex=FN] [--lba=LBA] [--maxlen=LEN]  [--raw]  [--readonly]
[--report-type=RT] [--scan-len=SL] [--verbose] [--version] DEVICE


SG_GET_LBA_STATUS(8)               SG3_UTILS              SG_GET_LBA_STATUS(8)

       sg_get_lba_status - send SCSI GET LBA STATUS(16 or 32) command

       sg_get_lba_status  [--16]  [--32]  [--brief] [--element-id=EI] [--help]
       [--hex]  [--inhex=FN] [--lba=LBA] [--maxlen=LEN]  [--raw]  [--readonly]
       [--report-type=RT] [--scan-len=SL] [--verbose] [--version] DEVICE

       Send  the  SCSI GET LBA STATUS(16) or GET LBA STATUS(32) command to the
       DEVICE and output the response. The 16 byte command variant was  intro-
       duced  in  (draft)  SBC-3  revision 20 and devices that support logical
       block provisioning should support this command. The GET LBA  STATUS(32)
       command was added in (draft) SBC-4 revision 14.

       The  default  action  is  to  decode  the  response into one LBA status
       descriptor per line then output a header and the status descriptors  to
       stdout.  The descriptor LBA is output in hex (prefixed by '0x') and the
       number of blocks is output in decimal followed by the provisioning sta-
       tus and additional status in decimal. The provisioning status can be in
       the range 0 to 15 of which only 0 (mapped or unknown), 1 (unmapped),  2
       (anchored),  3  (mapped) and 4 (unknown) are used currently. The amount
       of output can be reduced by the --brief option.

       Rather than send this SCSI command to DEVICE, if the --inhex=FN  option
       is  given,  then the contents of the file named FN are decoded as ASCII
       hex and then processed if it was the response of this command.

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

       -S, --16
              send SCSI GET LBA STATUS(16) command which is the 16 byte  vari-
              ant. In the absence of the --16 or the --32 options the SCSI GET
              LBA STATUS(16) command is  sent.  If  both  --16  and  the  --32
              options are given then the GET LBA STATUS(16) command is sent.

       -T, --32
              send  SCSI GET LBA STATUS(32) command which is the 32 byte vari-
              ant. When given together with the --16 option then  this  option
              is ignored (so the GET LBA STATUS(16) command is sent).

       -b, --brief
              when  use once then one LBA status descriptor per line is output
              to stdout.   Each  line  has  this  format:  "0x<descriptor_LBA>
              0x<blocks>  <provisioning_status>  <additional_status>".  So the
              descriptor's starting LBA and number of blocks are output in hex
              while the provisioning status and additional status are in deci-
              mal. When used twice (e.g. '-bb' or '--brief --brief') then  the
              provisioning  status  of  the  given  LBA (or LBA 0 if the --lba
              option is not given) is output to stdout. A check is  made  that
              the given LBA lies in the range of the first returned LBA status
              descriptor (as it should according to  SBC-3  revision  20)  and
              warnings are sent to stderr if it doesn't.

       -e, --element-id=EI
              where  EI  is the element identifier of the physical element for
              which the LBAs shall be reported  based  on  the  value  in  the
              report  type  field  (i.e.  RT). This option is only active with
              the SCSI GET LBA STATUS(32) command (i.e. it is ignored  if  the
              GET LBA STATUS(16) command is sent).
              Valid  element identifiers are non-zero. The default value of EI
              is 0 which means in the context that no  element  identifier  is

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

       -H, --hex
              output response to this command in ASCII hex.

       -i, --inhex=FN
              where  FN  is  a filename whose contents are assumed to be ASCII
              hexadecimal bytes. See the "FORMAT  OF  FILES  CONTAINING  ASCII
              HEX"  section  in the sg3_utils manpage for more information. If
              DEVICE is also given then it is ignored. If the --raw option  is
              also given then the contents of FN are treated as binary.

       -l, --lba=LBA
              where  LBA  is the starting Logical Block Address (LBA) to check
              the provisioning status for. Note that the  DEVICE  chooses  how
              many  following  blocks  that it will return provisioning status

       -m, --maxlen=LEN
              where LEN is the (maximum)  response  length  in  bytes.  It  is
              placed in the cdb's "allocation length" field. If not given then
              24 is used. 24 is enough space for the response header  and  one
              LBA  status  descriptor.   LEN should be 8 plus a multiple of 16
              (e.g. 24, 40, and 56 are suitable).

       -r, --raw
              output response in binary  (to  stdout)  unless  the  --inhex=FN
              option  is  also given. In that case the input file name (FN) is
              decoded as binary (and the output is _not_ in binary).

       -R, --readonly
              open the DEVICE read-only (e.g. in Unix with the O_RDONLY flag).
              The default is to open it read-write.

       -t, --report-type=RT
              where  RT  is  0  for  report  all LBAs; 1 for report LBAs using
              non-zero provisioning status; 2 for report LBAs that are mapped;
              3  for report LBAs that are de-allocated; 4 for report LBAs that
              are anchored; 16 for report LBAs that may return an  unrecovered
              error. The REPORT TYPE field was added to the GET LBA STATUS cdb
              in sbc4r12.
              Since the REPORT TYPE field  is  newer  than  the  command,  the
              response  contains  the  RTP  bit to indicate whether or not the
              DEVICE acts on the REPORT TYE field (set when it does act on it,
              clear otherwise).

       -s, --scan-len=SL
              where  SL is the scan length which is the maximum number of con-
              tiguous logical blocks to be scanned  for  logical  blocks  that
              meet the given report type (i.e. RT). This option is only active
              with the SCSI GET LBA STATUS(32) command (i.e. it is ignored  if
              the GET LBA STATUS(16) command is sent).
              The  default value of SL is 0 which should be interpreted by the
              DEVICE as there is no limits to the number of LBAs that shall be

       -v, --verbose
              increase the level of verbosity, (i.e. debug output). Additional
              output caused by this option is sent to stderr.

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

       See attributes(7) for descriptions of the following attributes:

       |Availability   | system/storage/sg3_utils |
       |Stability      | Pass-through uncommitted |

       In SBC-3 revision 25 the calculation associated with the Parameter Data
       Length  field in the response was modified. Prior to that the byte off-
       set was 8 and in revision 25 it was changed to 4.

       For a discussion of logical  block  provisioning  see  section  4.7  of
       sbc4r14.pdf  at  http://www.t10.org  (or the corresponding section of a
       later draft).

       Source code for open source software components in Oracle  Solaris  can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-

       This    software    was    built    from    source     available     at
       https://github.com/oracle/solaris-userland.    The  original  community
       source was downloaded from  http://sg.danny.cz/sg/p/sg3_utils-1.46.tgz.

       Further information about this software can be found on the open source
       community website at http://sg.danny.cz/sg/sg3_utils.html.

       The exit status of sg_get_lba_status is 0 when it is successful. Other-
       wise see the sg3_utils(8) man page.

       Written by Douglas Gilbert.

       Report bugs to <dgilbert at interlog dot com>.

       Copyright (C) 2009-2019 Douglas Gilbert
       This software is distributed under a FreeBSD license. There is NO  war-
       ranty;  not  even  for MERCHANTABILITY or FITNESS FOR A PARTICULAR PUR-

       sg_write_same(8), sg_unmap(8), sg3_utils(8)

sg3_utils-1.45                    August 2019             SG_GET_LBA_STATUS(8)