sefsysevent - SEF sysevent
∕etc∕sysevent∕config∕SUNW,SUNWsamfs,Device,sysevent.conf
SUNWsamfs
In Oracle HSM environments, tape drive SCSI log sense error counter pages 2 and 3 for media analysis are available to the user via a Solaris sysevent. SEF (System Error Facility) sysevents are enabled by default with a default polling interval of once before unload. SEF sysevents behavior is controlled by defaults.conf and samset.
How to add a sysevent handler for SEF sysevents:
A simple SEF sysevent handler should be executable and may look like this:
#!∕bin∕ksh echo "$@" >> ∕var∕tmp∕xx.dat exit 0
To add the SEF sysevent handler to the syseventd (1M):
# syseventadm add -vSUNW -pSUNWsamfs -cDevice -sSEF ∕var∕tmp∕xx \"\$VENDOR\" \"\$PRODUCT\" \"\$USN\" \"\$REV\" \$TOD \$EQ_ORD \"\$NAME\" \$INQ_TYPE \"\$MEDIA_TYPE\" \"\$VSN\" \$LABEL_TIME \$LP2_PC0 \$LP2_PC1 \$LP2_PC2 \$LP2_PC3 \$LP2_PC4 \$LP2_PC5 \$LP2_PC6 \$LP3_PC0 \$LP3_PC1 \$LP3_PC2 \$LP3_PC3 \$LP3_PC4 \$LP3_PC5 \$LP3_PC6 \$WHERE \$sequence
The syseventadm (1M) add command above creates the
∕etc∕sysevent∕config∕SUNW,SUNWsamfs,Device,sysevent.conf file
and a path to your SEF sysevent handler ∕var∕tmp∕xx. Note the double
quotes are required when using the syseventadm (1M) command because
the strings can be empty and the data is positional.
To load the SEF sysevent handler:
# syseventadm restart
SEF sysevent event handler data looks like this:
# cat ∕var∕tmp∕xx.dat "HP " "Ultrium 2-SCSI " "HUL2M00585" "F45H" 1094048112 82 "∕dev∕rmt∕2cbn" 0x1 "li" "000750" 1091738029 0x0 0x0 0x0 0x0 0x0 0x70b1 0x0 0x0 0x0 0x0 0x322 0x322 0x4645 0x0 0x1 0x282 "HP " "Ultrium 2-SCSI " "HUL2M00617" "F5AH" 1094048116 81 "∕dev∕rmt∕1cbn" 0x1 "li" "NAB975" 1092691221 0x0 0x0 0x0 0x0 0x0 0x35c 0x0 0x0 0x0 0x0 0x0 0x0 0x4a 0x0 0x1 0x283
A C language program to convert time of day $TOD and $LABEL_TIME sysevent macros from digits to text:
#include stdio.h
#include sys∕types.h
#include stdlib.h
#include time.h
void main(int argc, char *argv)
{
char str[100];
time_t tm = atol(argv[1]);
cftime(str, "%C", &tm);
printf("%s\n", str);
}
The complied sefsysevent_time program then can be used to determine the label time of $VSN 000750.
# .∕sefsysevent_time 1091738029 Thu Aug 5 14:33:49 MDT 2004
To change the default polling cycle from once at unload to once every five minutes use:
# samset sef all on 300 # samset … device 80: tapealert on and supported, sef not applicable device 81: tapealert on and supported, sef on and supported 300s device 82: tapealert on and supported, sef on and supported 300s device 90: tapealert on and supported, sef on and supported 300s … Or use ∕etc∕opt∕SUNWsamfs∕defaults.conf to change the default behavior: # cat defaults.conf sef=all on 300
The SEF sysevent macros are available in the ∕opt∕SUNWsamfs∕include∕sefvals.h file. The following is a description of the variables:
FieldValue
Device
SEF
SUNW
SUNWsamfs
SEF sysevent handler macros about Oracle HSM configuration and the SCSI Log Sense Error Counters for pages 2 and 3 and parameters 0-6.
NameValue and Data Type
VENDORInquiry vendor. Data type is string.
PRODUCTInquiry product. Data type is string.
REVInquiry revision. Data type is string.
USNInquiry unit serial number. Data type is string.
TODTime of day. Data type is int32.
EQ_ORDmcf file Equipment Number. Data type is int16.
NAMEDevice name. Data type is string.
VERSIONInquiry version. Data type is byte.
INQ_TYPEInquiry peripheral device type. Data type is byte.
MEDIA_TYPEOracle HSM media type. Data type is string.
VSNVolume serial name. Data type is string.
LABEL_TIMEVSN label timestamp. Data type is integer.
SETmcf file Family Set. Data type is string.
FSEQmcf file Family Set Equipment Number. Data type is int16.
WHERESEF location poll=1 or unload=0. Data type is byte.
Write log sense page 2:
NameValue and Data Type
LP2_PC0Errors corrected without substantial delay. Data type is uint32.
LP2_PC1Errors corrected with possible delays. Data type is uint32.
LP2_PC2Total rewrites. Data type is uint32.
LP2_PC3Total errors corrected. Data type is uint32.
LP2_PC4Total times correction algorithm processed. Data type is uint32.
LP2_PC5Total bytes processed. Data type is uint64.
LP2_PC6Total uncorrected errors. Data type is uint32.
Read log sense page 3:
NameValue and Data Type
LP3_PC0Errors corrected without substantial delay. Data type is uint32.
LP3_PC1Errors corrected with possible delays. Data type is uint32.
LP3_PC2Total rereads. Data type is uint32.
LP3_PC3Total errors corrected. Data type is uint32.
LP3_PC4Total times correction algorithm processed. Data type is uint32.
LP3_PC5Total bytes processed. Data type is uint64.
LP3_PC6Total uncorrected errors. Data type is uint32.
To do simple media analysis, the captured sef data in the ∕var∕tmp∕xx.dat file can be formatted for StarOffice spreadsheet analysis and graphing.
samset (1m),
defaults.conf (4),
sefdata (4),
sefreport (1m),
tapealert (1m).