DragonFly On-Line Manual Pages
SG_LOGS(8) SG3_UTILS SG_LOGS(8)
NAME
sg_logs - access log pages with SCSI LOG SENSE command
SYNOPSIS
sg_logs [--all] [--brief] [--control=PC] [--enumerate] [--filter=FI]
[--help] [--hex] [--in=FN] [--list] [--maxlen=LEN] [--name] [--no_inq]
[--page=PG] [--paramp=PP] [--pcb] [--ppc] [--raw] [--readonly]
[--reset] [--select] [--sp] [--temperature] [--transport] [--verbose]
[--version] DEVICE
sg_logs [-a] [-A] [-b] [-c=PC] [-e] [-f=FI] [-h] [-H] [-i=FN] [-l] [-L]
[-m=LEN] [-n] [-p=PG] [-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 can be decoded. 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).
-e, --enumerate
this option is used to output information held in internal
tables about known log pages including their names and acronyms.
If given DEVICE is ignored. When given once (e.g. '-e') all
known pages are listed, sorted in ascending acronym order. When
given twice, vendor pages are excluded. When given three times,
all known pages are listed, sorted in ascending numeric order
listed; when given four times, vendor pages are excluded from
the numeric order.
The --filter=FI and --verbose options modify the output of the
enumeration.
-f, --filter=FI
FI is either a parameter code when DEVICE is given, or a
peripheral device type (pdt) (or other) if --enumerate is given.
In the parameter code case FI is a value between 0 and 65535
(0xffff) and only the parameter section matching that code is
output. 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 line 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.
In the --enumerate case, when FI >= zero it is taken as a pdt
value and only log pages associated with that pdt plus generic
pages listed in SPC are enumerated. If FI is -1 then the filter
does nothing which is the same as not giving this option; when
FI is -2 then only generic pages listed in SPC are enumerated.
-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. When used twice, each line of
hex has the ASCII equivalent shown to the right. When used three
times, the hex has no leading address nor trailing ASCII making
it suitable to be placed in a file (or piped). That file might
later be used by another invocation using the --in=FN option.
-i, --in=FN
This option may be used in two different contexts. One is with
the --select to send a LOG SELECT command to the given DEVICE;
see the LOG SELECT section below.
The other context is with no DEVICE argument given in which case
the contents of FN are decoded as if it were the response of a
LOG SENSE command (i.e. a log page). For decoding the page and
subpage numbers are taken from FN while the device type is
either generic (i.e. from SPC) or the value given by
--filter=FI.
FN is treated as a file name (or '-' for stdin) which contains
ASCII hexadecimal or binary representing a log page. 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.
-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
log page name/number to access. PG is either an acronym, a page
number, or a page, subpage number pair. Available acronyms can
be listed with the --enumerate option. Page (0 to 63) and
subpage (0 to 255) numbers are comma separated. They are decimal
unless a hexadecimal indication is given. A hexadecimal number
can be specified by a leading "0x" or a trailing "h".
A few acronyms specify a range of subpage values in which case
the acronym may be followed by a comma then a subpage number.
This method can also be used to fetch the Supported subpages log
page (e.g. --page=temp,0xff).
-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. When used with --enumerate, in the
list of known log page names, those that have no associated
decode logic are followed by "[hex only]".
-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.
The simplest way to find which log pages can be decoded by this utility
is to use the --enumerate option. Some page names are known but there
is no decode logic; such cases have "[hex only]" after the log page
name when the --verbose option is given with --enumerate.
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.
-e enumerate internal tables to show information about known log
pages. Equivalent to --enumerate 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 log page code to access. PG is either an acronym, a page number,
or a page, subpage pair. Available acronyms can be listed with
the --enumerate option. Page (0 to 3f) and subpage (0 to ff)
numbers are comma separated. The numbers are assumed to be
hexadecimal.
-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 (C) 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)
sg3_utils-1.41 December 2014 SG_LOGS(8)