scsi_vu_errmsg man page on SunOS

Man page or keyword search:  
man Server   20652 pages
apropos Keyword Search (all sections)
Output format
SunOS logo
[printable version]

scsi_vu_errmsg(9F)	 Kernel Functions for Drivers	    scsi_vu_errmsg(9F)

NAME
       scsi_vu_errmsg - display a SCSI request sense message

SYNOPSIS
       #include <sys/scsi/scsi.h>

       void  scsi_vu_errmsg(struct  scsi_pkt *pktp, char *drv_name, int sever‐
       ity,  int   err_blkno,	struct	 scsi_key_strings   *cmdlist,	struct
       scsi_extended_sense  *sensep,  struct  scsi_asq_key_strings  *asc_list,
       char *(*decode_fru)(struct scsi_device*, char *, int, char));

INTERFACE LEVEL
       Solaris DDI specific (Solaris DDI).

PARAMETERS
       The following parameters are supported:

       devp

	   Pointer to the scsi_device(9S) structure.

       pktp

	   Pointer to a scsi_pkt(9S) structure.

       drv_name

	   String used by scsi_log(9F).

       severity

	   Error severity level, maps to severity strings below.

       blkno

	   Requested block number.

       err_blkno

	    Error block number.

       cmdlist

	   An array of SCSI command description strings.

       sensep

	   A pointer to a scsi_extended_sense(9S) structure.

       asc_list

	   A pointer to a array of asc and ascq message list.The list must  be
	   terminated with -1 asc value.

       decode_fru

	   This	 is  a	function  pointer that will be called after the entire
	   sense information has been decoded.	The  parameters	 will  be  the
	   scsi_device	structure to identify the device. Second argument will
	   be a pointer to a buffer of length specified by third argument. The
	   fourth  argument  will be the FRU byte. decode_fru might be NULL if
	   no special decoding is required. decode_fru is expected  to	return
	   pointer to a char string if decoding possible and NULL if no decod‐
	   ing is possible.

DESCRIPTION
       This function is very similar to scsi_errmsg(9F) but allows decoding of
       vendor-unique ASC/ASCQ and FRU information.

       The  scsi_vu_errmsg() function interprets the request sense information
       in the sensep pointer and generates a standard  message	that  is  dis‐
       played  using  scsi_log(9F).   It  first	 searches the list array for a
       matching vendor unique code if supplied. If it does not find one in the
       list  then the standard list is searched. The first line of the message
       is always a CE_WARN, with the continuation lines being CE_CONT.	sensep
       may  be	NULL, in which case no sense key or vendor information is dis‐
       played.

       The driver should make the determination as to when to call this	 func‐
       tion  based  on the severity of the failure and the severity level that
       the driver wants to report.

       The scsi_device(9S) structure denoted by devp supplies the  identifica‐
       tion  of	 the device that requested the display. severity selects which
       string is used in the ``Error Level:'' reporting, according to the  ta‐
       ble below:

	    Severity Value:	 String:
	    SCSI_ERR_ALL	 All
	    SCSI_ERR_UNKNOWN	 Unknown
	    SCSI_ERR_INFO	 Information
	    SCSI_ERR_RECOVERED	 Recovered
	    SCSI_ERR_RETRYABLE	 Retryable
	    SCSI_ERR_FATAL	 Fatal

       blkno  is  the  block number of the original request that generated the
       error. err_blkno is the block number where the error occurred.  cmdlist
       is a mapping table for translating the SCSI command code in pktp to the
       actual command string.

       The cmdlist is described in the structure below:

       struct scsi_key_strings {
	   int key;
	   char *message;
       };

       For a basic SCSI disk, the following list is appropriate:

	    static struct scsi_key_strings scsi_cmds[] = {
		    0x00, "test unit ready",
		    0x01, "rezero/rewind",
		    0x03, "request sense",
		    0x04, "format",
		    0x07, "reassign",
		    0x08, "read",
		    0x0a, "write",
		    0x0b, "seek",
		    0x12, "inquiry",
		    0x15, "mode select",
		    0x16, "reserve",
		    0x17, "release",
		    0x18, "copy",
		    0x1a, "mode sense",
		    0x1b, "start/stop",
		    0x1e, "door lock",
		    0x28, "read(10)",
		    0x2a, "write(10)",
		    0x2f, "verify",
		    0x37, "read defect data",
		    0x3b, "write buffer",
		    -1, NULL
	    };

CONTEXT
       The scsi_vu_errmsg() function may be called from	 user,	interrupt,  or
       kernel context.

EXAMPLES
       Example 1: Using scsi_vu_errmsg()

	    struct scsi_asq_key_strings cd_slist[] = {
		    0x81, 0, "Logical Unit is inaccessable",
		    -1, 0, NULL,
	    };

	    scsi_vu_errmsg(devp, pkt, "sd",
			   SCSI_ERR_INFO, bp->b_blkno, err_blkno,
			   sd_cmds, rqsense, cd_list,
			   my_decode_fru);

       This generates the following console warning:

       WARNING: /sbus@1,f8000000/esp@0,800000/sd@1,0 (sd1):
		 Error for Command: read	Error Level: Informational
		 Requested Block: 23936		Error Block: 23936
		 Vendor: XYZ		    Serial Number: 123456
		 Sense Key:  Unit Attention
		 ASC: 0x81 (Logical Unit is inaccessable), ASCQ: 0x0
		 FRU: 0x11 (replace LUN 1, located in slot 1)

SEE ALSO
       cmn_err(9F),	scsi_errmsg(9F),     scsi_log(9F),    scsi_errmsg(9F),
       scsi_asc_key_strings(9S),   scsi_device(9S),   scsi_extended_sense(9S),
       scsi_pkt(9S)

       Writing Device Drivers

       STREAMS Programming Guide

SunOS 5.10			  16 Jan 2006		    scsi_vu_errmsg(9F)
[top]

List of man pages available for SunOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net