Provided by: sg3-utils_1.48-2ubuntu1_amd64 bug

NAME

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

SYNOPSIS

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

DESCRIPTION

       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  introduced 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 status, LBA accessibility 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.

OPTIONS

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

       -B, --blockhex
              the number of blocks in each LBA status descriptor is usually displayed in decimal.  An  exception
              is  when  the --brief option is given in which case it is shown in hexadecimal. When the option is
              given once, both cases are output in hexadecimal. When the option is given twice, both  cases  are
              output in decimal.

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

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

       -H, --hex
              output response to this command in  ASCII  hex.  To  produce  hex  output  suitable  for  a  later
              invocation to fetch with the --inhex=FN option, use this option three times. The short form option
              makes this more convenient: '-HHH'.

       -i, --inhex=FN
              where  FN  is  a  filename whose contents are assumed to be ASCII hexadecimal bytes. See the "HEX,
              BINARY AND JSON FORMATS" 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.

       -j[=JO], --json[=JO]
              output  is  in  JSON  format instead of plain text form. Note that arguments to the short and long
              form are themselves optional and if present start with "=" and no whitespace is  permitted  around
              that "=".
              See sg3_utils_json manpage or use '?' for JO to get a summary.

       -J, --js-file=JFN
              output  is  in  JSON  format  and  it  is sent to a file named JFN. If that file exists then it is
              truncated. By default, the JSON output is sent to stdout.
              When this option is given,  the  --json[=JO]  option  is  implied  and  need  not  be  given.  The
              --json[=JO] option may still be needed to set the JO parameter to non-default values.

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

       -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 TYPE 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 contiguous 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 scanned.

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

NOTES

       In SBC-3 revision 25 the calculation associated with the Parameter Data Length field in the response  was
       modified. Prior to that the byte offset 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 https://www.t10.org (or
       the corresponding section of a later draft).

EXAMPLES

       This example uses a "canned" hex file rather than a real DEVICE.

          # cd <folder at root of sg3_utils source package>
          # sg_get_lba_status --inhex=inhex/get_lba_status.hex

         Command completed due to meeting capacity of medium
         RTP=0x0
         [1] LBA: 0x0             blocks:  287453952  mapped (or unknown);  LBA accessibility not reported
         [2] LBA: 0x11223300      blocks:         68   deallocated;   LBA  access  not  reported   [may  contain
       unrecovered errors]
         [3]  LBA:  0x11223344       blocks:          51   deallocated;   LBA  extent inaccessible  [may contain
       unrecovered errors]

EXIT STATUS

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

AUTHORS

       Written by Douglas Gilbert.

REPORTING BUGS

       Report bugs to <dgilbert at interlog dot com>.

COPYRIGHT

       Copyright © 2009-2022 Douglas Gilbert
       This software is  distributed  under  a  BSD-2-Clause  license.  There  is  NO  warranty;  not  even  for
       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

SEE ALSO

       sg_write_same,sg_unmap,sg3_utils,sg3_utils_json(sg3_utils)

sg3_utils-1.48                                      June 2023                               SG_GET_LBA_STATUS(8)