Man page - sg_get_lba_status(8)
Packages contains this manual
- scsi_start(8)
- sginfo(8)
- sg_scan(8)
- sg_luns(8)
- sg_bg_ctl(8)
- sg3_utils_json(8)
- sg_safte(8)
- sg_referrals(8)
- sg_sat_datetime(8)
- sg_vpd(8)
- sg_decode_sense(8)
- sg_rdac(8)
- sg_inq(8)
- sg_start(8)
- sg_timestamp(8)
- sg_z_act_query(8)
- sg_write_buffer(8)
- sg_sat_phy_event(8)
- sg_get_elem_status(8)
- sg_wr_mode(8)
- sg_rep_pip(8)
- scsi_mandat(8)
- sg_test_rwbuf(8)
- scsi_stop(8)
- sg_modes(8)
- sg_rmsn(8)
- sg_ses_microcode(8)
- sg_read_buffer(8)
- sgm_dd(8)
- scsi_readcap(8)
- sg_write_same(8)
- sg_rbuf(8)
- sg_rep_zones(8)
- sg_ident(8)
- sg_sat_set_features(8)
- sg_zone(8)
- sg_opcodes(8)
- sg_logs(8)
- sg_read_block_limits(8)
- sg_write_attr(8)
- sg_rep_density(8)
- sg_dd(8)
- sg_sanitize(8)
- sg_seek(8)
- sg3_utils(8)
- sg_compare_and_write(8)
- sg_requests(8)
- sg_reset(8)
- scsi_temperature(8)
- scsi_ready(8)
- sg_verify(8)
- sg_prevent(8)
- sg_sat_read_gplog(8)
- sg_persist(8)
- scsi_logging_level(8)
- sg_rtpg(8)
- sg_write_long(8)
- sg_senddiag(8)
- sg_format(8)
- sg_read_long(8)
- sgp_dd(8)
- sg_ses(8)
- sg_reassign(8)
- sg_map26(8)
- sg_get_lba_status(8)
- sg_get_config(8)
- sg_reset_wp(8)
- sg_unmap(8)
- sg_read(8)
- sg_write_verify(8)
- sg_rem_rest_elem(8)
- scsi_satl(8)
- rescan-scsi-bus.sh(8)
- sg_map(8)
- sg_emc_trespass(8)
- sg_write_x(8)
- sg_sat_identify(8)
- sg_sync(8)
- sg_copy_results(8)
- sg_stpg(8)
- sg_raw(8)
- sg_xcopy(8)
- sg_read_attr(8)
- sg_stream_ctl(8)
- sg_readcap(8)
- sg_turs(8)
apt-get install sg3-utils
Manual
SG_GET_LBA_STATUS
NAMESYNOPSIS
DESCRIPTION
OPTIONS
NOTES
EXAMPLES
EXIT STATUS
AUTHORS
REPORTING BUGS
COPYRIGHT
SEE ALSO
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)