Provided by: sg3-utils_1.40-0ubuntu1_amd64 bug

NAME

       sg_logs - access log pages with SCSI LOG SENSE command

SYNOPSIS

       sg_logs   [--all]   [--brief]   [--control=PC]   [--filter=PARC]   [--help]  [--hex]  [--in=FN]  [--list]
       [--maxlen=LEN] [--name] [--no_inq] [--page=PG[,SPG]] [--paramp=PP] [--pcb] [--ppc]  [--raw]  [--readonly]
       [--reset] [--select] [--sp] [--temperature] [--transport] [--verbose] [--version] DEVICE

       sg_logs  [-a]  [-A]  [-b]  [-c=PC]  [-f=PARC]  [-h]  [-H]  [-i=FN]  [-l] [-L] [-m=LEN] [-n] [-p=PG[,SPG]]
       [-paramp=PP] [-pcb] [-ppc] [-r] [-R] [-select] [-sp] [-t] [-T] [-v] [-V] [-?]  [-x] DEVICE

DESCRIPTION

       This utility sends a SCSI LOG SENSE command to the DEVICE and then outputs the response.  The  LOG  SENSE
       command  is  used  to  fetch  log  pages. Known log pages are decoded by default. When the --reset and/or
       --select option is given then a SCSI LOG SELECT command is issued.

       In SPC-4 revision 5 a subpage code was introduced to both the LOG SENSE and LOG SELECT  command.  At  the
       same  time  a  page  code field was introduced to the to the LOG SELECT command. The log subpage code can
       range from 0 to 255 (0xff) inclusive. The subpage code value 255 can be thought of as a wildcard.

       This utility supports two command line syntaxes, the preferred one is shown first  in  the  synopsis  and
       explained  in  this  section. A later section on the old command line syntax outlines the second group of
       options.

OPTIONS

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

       -a, --all
              outputs all the log pages supported by the device. This requires a two stage  process:  first  the
              "supported  log pages" log page is fetched, then for each entry in the response, the corresponding
              log page is fetched and displayed.  When used twice (e.g. '-aa') all log pages  and  subpages  are
              fetched.

       -b, --brief
              shorten  the amount of output for some log pages. For example the Tape Alert log page only outputs
              parameters whose flags are set when --brief is given.

       -c, --control=PC
              accepts 0, 1, 2 or 3 for the PC argument:
                0 : current threshold values
                1 : current cumulative values
                2 : default threshold values
                3 : default cumulative values
              The default value is 1 (i.e. current cumulative values).

       -f, --filter=PARC
              only output the log parameter whose parameter code (a number between 0 and  65535)  matches  PARC.
              PARC  is  assumed to be decimal unless a hexadecimal indication is given (e.g. a leading '0x' or a
              trailing 'h').  The --hex option outputs log parameter in hexadecimal rather than decoding it.  If
              the  --hex  option  is  used twice then the leading address on each kine of hex is removed. If the
              --raw option is given then the log parameter is output in binary.
              Most log pages contain one or more log parameters. Examples of those that don't  are  those  pages
              that list supported log pages.

       -h, --help
              print out the usage message then exit.

       -H, --hex
              The default action is to decode known mode page numbers (and subpage numbers) into text. When this
              option is used once, the response is output in hexadecimal.

       -i, --in=FN
              FN is treated as a file name (or '-'  for  stdin)  which  contains  ASCII  hexadecimal  or  binary
              representing  a  log  page  that  will  be  sent  as  parameter  data of a LOG SELECT command. The
              hexadecimal should be arranged as 1 or 2 digits representing a byte each of which is whitespace or
              comma  separated.   Anything  from and including a hash mark to the end of line is ignored. If the
              --raw option is also given then FN is treated as binary. See the LOG SELECT section.

       -l, --list
              lists the names of all logs sense pages supported by this device. This  is  done  by  reading  the
              "supported  log  pages"  log  page. When used twice (e.g. '-ll') lists the names of all logs sense
              pages and subpages supported by this device. There is a list of common log page codes below.

       -m, --maxlen=LEN
              sets the "allocation length" field in the LOG SENSE cdb. The is the maximum length in  bytes  that
              the  response  will  be.  Without this option (or LEN equal to 0) this utility first fetches the 4
              byte response then does a second access with the length indicated in the first (4 byte)  response.
              Negative  values  and 1 for LEN are not accepted. LEN cannot exceed 65535 (0xffff).  Responses can
              be quite large (e.g. the background scan results log page) and this option can be  used  to  limit
              the amount of information returned.

       -n, --name
              decode  some log pages into 'name=value' entries, one per line. The name contains no space and may
              be abbreviated and the value is decimal unless prefixed by '0x'. Nesting is indicated  by  leading
              spaces. This form is meant to be relatively easy to parse.

       -x, --no_inq
              suppresses  the output of information obtained from an initial call to the INQUIRY command for the
              standard response. The default (assuming some other options that suppress this output are also not
              given) is to output several device identification strings.
              If  this  option  is  given twice (or more) then no INQUIRY command is sent hence there will be no
              device identification string output either. Also the peripheral device type (PDT) field  will  not
              be  obtained  so  this  utility  will not be able to differentiate between some log pages that are
              device dependent. It will assume a PDT of 0 (i.e. a disk).

       -O, --old
              switch to older style options.

       -p, --page=PG[,SPG]
              log page code to access. PG is expected to be a decimal number  between  0  and  63  inclusive.  A
              hexadecimal  number  can be specified by a leading "0x" or a trailing "h" so the valid range is 0x
              to 0x3f. Common log page codes are listed below. Optionally SPG, a subpage code, can be given. SPG
              is expected to be a decimal or hex number between 0 and 255 inclusive.

       -P, --paramp=PP
              PP is the parameter pointer value to place in a field of that name in the LOG SENSE cdb. A decimal
              number in the range 0 to 65535 (0xffff) is expected. When a value greater  than  0  is  given  the
              --ppc option should be selected. The default value is 0.

       -q, --pcb
              show Parameter Control Byte settings (only relevant when log parameters being output in ASCII).

       -Q, --ppc
              sets  the  Parameter  Pointer Control (PPC) bit in the LOG SENSE cdb. Default is 0 (i.e. cleared).
              This bit was made obsolete in SPC-4 revision 18.

       -r, --raw
              output the response in binary to stdout. Error messages and warnings are output to stderr.

       -R, --readonly
              open the DEVICE read-only (e.g. in Unix with the O_RDONLY flag). The default action is to try  and
              open  DEVICE  read-write  then  if  that  fails  try  to open again with read-only. However when a
              read-write open succeeds there may still be unwanted actions on the close (e.g. some OSes  try  to
              do a SYNCHRONIZE CACHE command). So this option forces a read-only open on DEVICE and if it fails,
              this utility will exit. Note that options like --select most likely need a read-write open.

       -R, --reset
              use SCSI LOG SELECT command (PCR bit set) to reset the all log pages (or the given page).  Exactly
              what is reset depends on the accompanying SP bit (i.e. --sp option which defaults to 0) and the PC
              ("page control") value (which defaults to 1). Supplying this option implies the --select option as
              well.  This option seems to clear error counter log pages but leaves pages like self-test results,
              start-stop cycle counter and temperature log pages unaffected. This  option  may  be  required  to
              clear  log pages if a counter reaches its maximum value since the log page in which the counter is
              found will remain "stuck" until something is done.

       -S, --select
              use a LOG SELECT command. The default action (i.e. when neither this option nor --reset is  given)
              is to do a LOG SENSE command. See the LOG SELECT section.

       -s, --sp
              sets  the  Saving  Parameters  (SP)  bit. Default is 0 (i.e. cleared). When set this instructs the
              device to store the current log page parameters (as indicated by the DS and TSD  parameter  codes)
              in  some  non-volatile  location.  Hence the log parameters will be preserved across power cycles.
              This option is typically not needed, especially if the GLTSD flag is clear  in  the  control  mode
              page as this instructs the device to periodically save all saveable log parameters to non-volatile
              locations.

       -t, --temperature
              outputs the temperature. First looks in the temperature log page and  if  that  is  not  available
              tries  the  Informational  Exceptions  log  page  which  may  also  have  the  current temperature
              (especially on older disks).

       -T, --transport
              outputs the transport ('Protocol specific port') log page. Equivalent to setting '--page=18h'.

       -v, --verbose
              increase level of verbosity.

       -V, --version
              print out version string then exit.

LOG SELECT

       The LOG SELECT command can be used to reset certain parameters to vendor specific defaults, save them  to
       non-volatile  storage  (i.e.  the  media),  or supply new page contents. This command has changed between
       SPC-3 and SPC-4 with the addition of the Page and Subpage Code fields which can only be non zero when the
       Parameter list length is zero.

       The  --select option is required to issue a LOG SELECT command. If the --in=FN option is not given (or FN
       is effectively empty) then the Parameter list length field is set to zero. If the --in=FN  option  is  is
       given  then  its  decoded  data is placed in the data-out buffer and its length in bytes is placed in the
       Parameter list length field.

       Other options that are active with the LOG SELECT command are --control=PC, --reset (which sets  the  PCR
       bit) and --sp.

APPLICATION CLIENT

       This  is  the  name  of a log page that acts as a container for data provided by the user. An application
       client is a SCSI term for the program that issues commands to a SCSI initiator (often known as a Host Bus
       Adapter (HBA)). So, for example, this utility is a SCSI application client.

       The  Application  Client  log page has 64 log parameters with parameters codes 0 to 63. Each can hold 252
       bytes of user binary data. That 252 bytes (or less) of user data, with a 4 byte prefix (for  a  total  of
       256 bytes) can be provided with the --in=FN option. A typical prefix would be '0,n,83,fc'. The "n" is the
       parameter code in hex so the last log parameter would be '0,3f,83,fc'. That log parameter could  be  read
       back at some later time with '--page=0xf --filter=0x<n>'.

NOTES

       This utility will usually do a double fetch of log pages with the SCSI LOG SENSE command. The first fetch
       requests a 4 byte response (i.e. place 4 in the "allocation length" field in the cdb). From that response
       it can calculate the actual length of the response which is what it asks for on the second fetch. This is
       typical practice in SCSI and guaranteed to work in  the  standards.  However  some  older  devices  don't
       comply. For those devices using the --maxlen=LEN option will do a single fetch.  A value of 252 should be
       a safe starting point.

       Various log pages hold information error rates,  device  temperature,  start  stop  cycles  since  device
       produced  and  the  results  of the last 20 self tests. Self tests can be initiated by the sg_senddiag(8)
       utility.  The smartmontools package provides much of  the  information  found  with  sg_logs  in  a  form
       suitable for monitoring the health of SCSI disks and tape drives.

       Here  is a list of log pages that are decoded by this utility. [The code values can be given to '--page='
       as is, with a trailing "h" instead of the leading "0x", or as their decimal equivalents.]:

       0x0       Supported log pages
       0x0,0xff  Supported log pages and subpages
       0x1       Buffer over-run/under-run
       0x2       Write error counter
       0x3       Read error counter
       0x4       Read reverse error counter
       0x5       Verify error counter
       0x6       Non-medium error
       0x7       Last n error events
       0x8       Format status (sbc-2)
       0xb       Last n deferred errors or asynchronous events
       0xc       Logical block provisioning (sbc-3) or
                 Sequential access device (ssc-2)
       0xd       Temperature
       0xe       Start-stop cycle counter
       0xf       Application client
       0x10      Self-test results
       0x11      Solid state media
       0x15      Background scan results (sbc-3)
       0x16      ATA pass-through results (sat-3)
       0x17      Non-volatile cache (sbc-3)
       0x18      Protocol specific port (SAS transport)
       0x19      General statistics and performance
       0x1a      Power condition transitions
       0x2f      Informational exceptions
       0x37      Seagate cache (vendor, disk)
       0x3e      Seagate factory (vendor, disk)

       In the 2.4 series of Linux kernels the DEVICE must be a SCSI generic (sg) device. In the 2.6 series block
       devices  (e.g.  SCSI  disks and DVD drives) can also be specified. For example "sg_logs -a /dev/sda" will
       work in the 2.6 series kernels.

EXIT STATUS

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

OLDER COMMAND LINE OPTIONS

       The options in this section were the only ones available prior to sg3_utils version 1.23 .  In  sg3_utils
       version  1.23  and  later  these  older  options can be selected by either setting the SG3_UTILS_OLD_OPTS
       environment variable or using '--old' (or '-O) as the first option.

       Options with arguments or with two or more letters can have an extra '-'  prepended.  For  example:  both
       '-pcb' and '--pcb' are acceptable.

       -a     outputs all the log pages supported by the device.  Equivalent to --all in the main description.

       -A     outputs  all  the  log pages and subpages supported by the device.  Equivalent to '--all --all' in
              the main description.

       -c=PC  Equivalent to --control=PC in the main description.

       -h     suppresses decoding of known log sense pages and prints out the response in hex instead.

       -i=FN  FN is treated as a file name (or '-' for stdin) which contains ASCII  hexadecimal  representing  a
              log page that will be sent as parameter data of a LOG SELECT command. See the LOG SELECT section.

       -H     same action as '-h' in this section and equivalent to --hex in the main description.

       -l     lists  the  names  of  all logs sense pages supported by this device.  Equivalent to --list in the
              main description.

       -L     lists the names of all logs sense pages and subpages  supported  by  this  device.  Equivalent  to
              '--list --list' in the main description.

       -m=LEN request  only  LEN  bytes  of  response  data.  Default  is  0 which is interpreted as all that is
              available. LEN is  decimal  unless  it  has  a  leading  '0x'  or  trailing  'h'.   Equivalent  to
              --maxlen=LEN in the main description.

       -n     Equivalent to --name in the main description.

       -N     switch to the newer style options.

       -p=PG[,SPG]
              PG  is  the log page code to access. Should be a hexadecimal number between 0 and 3f inclusive. If
              given SPG is the log subpage code.  SPG should be a hexadecimal number between 0 and ff inclusive.
              The subpage code of 'ff' can be thought of as a wildcard.

       -paramp=PP
              PP  is the parameter pointer value (in hex) to place in command.  Should be a number between 0 and
              ffff inclusive.

       -pcb   show Parameter Control Byte settings (only relevant when log parameters being output in ASCII).

       -ppc   sets the Parameter Pointer Control (PPC) bit. Default is 0 (i.e. cleared).

       -r     use SCSI LOG SELECT command (PCR bit set) to  reset  the  all  log  pages  (or  the  given  page).
              Equivalent to --reset in the main description.

       -R     Equivalent to --readonly in the main description.

       -select
              use a LOG SELECT command. Equivalent to --select in the main description.

       -sp    sets  the Saving Parameters (SP) bit. Default is 0 (i.e. cleared).  Equivalent to --sp in the main
              description.

       -t     outputs the temperature. Equivalent to --temperature in the main description.

       -T     outputs the transport ('Protocol specific port') log page. Equivalent to --transport in  the  main
              description.

       -v     increase level of verbosity.

       -V     print out version string then exit.

       -x     suppress the INQUIRY command. Equivalent to --no_inq in the main description.

       -?     output usage message then exit.

AUTHOR

       Written by Douglas Gilbert

REPORTING BUGS

       Report bugs to <dgilbert at interlog dot com>.

COPYRIGHT

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

SEE ALSO

       smartctl(smartmontools), sg_senddiag(8)