Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
SG_GET_LBA_STATUS(8)		   SG3_UTILS		  SG_GET_LBA_STATUS(8)

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	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  de-
       scriptor	 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, LBA	accessibility and additional status in decimal.	The provision-
       ing  status  can	be in the range	0 to 15	of which only 0	(mapped	or un-
       known), 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	 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 op-
	      tions 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  op-
	      tion 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 de-
	      scriptor (as it should according to SBC-3	revision 20) and warn-
	      ings 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 re-
	      port 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 --in-
	      hex=FN option, use this option three times. The short  form  op-
	      tion 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"  sec-
	      tion 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 out-
	      put 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  op-
	      tion is also given. In that case the input file name (FN)	is de-
	      coded 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  re-
	      sponse  contains	the RTP	bit to indicate	whether	or not the DE-
	      VICE 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 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
	      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 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	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.	Other-
       wise see	the sg3_utils(8) man page.

AUTHORS
       Written by Douglas Gilbert.

REPORTING BUGS
       Report bugs to <dgilbert	at interlog dot	com>.

COPYRIGHT
       Copyright (C) 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 PUR-
       POSE.

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)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=sg_get_lba_status&sektion=8&manpath=FreeBSD+Ports+14.3.quarterly>

home | help