4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
22 * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
30 * This module provides error messages to the
31 * a5k and g_fc libraries.
35 * I18N message number ranges
36 * This file: 10000 - 10499
37 * Shared common messages: 1 - 1999
40 /* #define _POSIX_SOURCE 1 */
48 #include <sys/scsi/scsi.h>
50 #include <l_error.h> /* error msg defines. */
51 #include <l_common.h> /* I18N message define */
54 #include <string.h> /* For strerror */
64 * Decodes the SCSI sense byte to a string.
70 decode_sense_byte(uchar_t status
)
72 switch (status
& STATUS_MASK
) {
74 return (MSGSTR(10000, "Good status"));
77 return (MSGSTR(128, "Check condition"));
80 return (MSGSTR(124, "Condition met"));
83 return (MSGSTR(37, "Busy"));
85 case STATUS_INTERMEDIATE
:
86 return (MSGSTR(10001, "Intermediate"));
88 case STATUS_INTERMEDIATE_MET
:
89 return (MSGSTR(10002, "Intermediate - condition met"));
91 case STATUS_RESERVATION_CONFLICT
:
92 return (MSGSTR(10003, "Reservation_conflict"));
94 case STATUS_TERMINATED
:
95 return (MSGSTR(126, "Command terminated"));
98 return (MSGSTR(83, "Queue full"));
101 return (MSGSTR(4, "Unknown status"));
107 * This function finds a predefined error string to a given
108 * error number (errornum), allocates memory for the string
109 * and returns the corresponding error message to the caller.
112 * error string if O.K.
116 *g_get_errString(int errornum
)
118 char err_msg
[MAXLEN
], *errStrg
;
120 err_msg
[0] = '\0'; /* Just in case */
121 if (errornum
< L_BASE
) {
122 /* Some sort of random system error most likely */
123 errStrg
= strerror(errno
);
124 if (errStrg
!= NULL
) {
125 (void) strcpy(err_msg
, errStrg
);
126 } else { /* Something's _really_ messed up */
127 (void) sprintf(err_msg
,
129 " Error: could not decode the"
131 " The given error message is not"
132 " defined in the library.\n"
133 " Message number: %d.\n"), errornum
);
136 /* Make sure ALL CASES set err_msg to something */
137 } else switch (errornum
) {
139 (void) sprintf(err_msg
,
141 " Error: SCSI failure."));
144 case L_PR_INVLD_TRNSFR_LEN
:
145 (void) sprintf(err_msg
,
147 " Error: Persistant Reserve command"
148 " transfer length not word aligned."));
151 case L_RD_NO_DISK_ELEM
:
152 (void) sprintf(err_msg
,
154 " Error: Could not find the disk elements"
155 " in the Receive Diagnostic pages."));
158 case L_RD_INVLD_TRNSFR_LEN
:
159 (void) sprintf(err_msg
,
161 " Error: Receive Diagnostic command"
162 " transfer length not word aligned."));
165 case L_ILLEGAL_MODE_SENSE_PAGE
:
166 (void) sprintf(err_msg
,
168 " Error: Programming error - "
169 "illegal Mode Sense parameter."));
172 case L_INVALID_NO_OF_ENVSEN_PAGES
:
173 (void) sprintf(err_msg
,
175 " Error: Invalid no. of sense pages.\n"
176 " Could not get valid sense page"
177 " information from the device."));
180 case L_INVALID_BUF_LEN
:
181 (void) sprintf(err_msg
,
183 " Error: Invalid buffer length.\n"
184 " Could not get diagnostic "
185 " information from the device."));
189 (void) sprintf(err_msg
,
191 " Error: Invalid pathname"));
195 (void) sprintf(err_msg
,
197 " Error: Could not get"
198 " physical path to the device."));
202 (void) sprintf(err_msg
,
204 " Error: No SES found"
205 " for the device path."));
208 case L_INVLD_PATH_NO_SLASH_FND
:
209 (void) sprintf(err_msg
,
211 "Error in the device physical path."));
214 case L_INVLD_PATH_NO_ATSIGN_FND
:
215 (void) sprintf(err_msg
,
217 " Error in the device physical path:"
222 (void) sprintf(err_msg
,
224 " Error: Invalid path format."
228 case L_INVALID_LED_RQST
:
229 (void) sprintf(err_msg
,
231 " Error: Invalid LED request."));
234 case L_INVALID_PATH_FORMAT
:
235 (void) sprintf(err_msg
,
237 " Error: Invalid path format."));
240 case L_OPEN_PATH_FAIL
:
241 (void) sprintf(err_msg
,
243 " Error opening the path."));
246 case L_INVALID_PASSWORD_LEN
:
247 (void) sprintf(err_msg
,
249 "Error: Invalid password length."));
252 case L_INVLD_PHYS_PATH_TO_DISK
:
253 (void) sprintf(err_msg
,
255 " Error: Physical path not of a disk."));
258 case L_INVLD_ID_FOUND
:
259 (void) sprintf(err_msg
,
261 " Error in the device physical path:"
262 " Invalid ID found in the path."));
265 case L_INVLD_WWN_FORMAT
:
266 (void) sprintf(err_msg
,
268 " Error in the device physical path:"
269 " Invalid wwn format."));
273 case L_NO_VALID_PATH
:
274 (void) sprintf(err_msg
,
276 " Error: Could not find valid path to"
280 case L_NO_WWN_FOUND_IN_PATH
:
281 (void) sprintf(err_msg
,
283 " Error in the device physical path:"
288 case L_NO_NODE_WWN_IN_WWNLIST
:
289 (void) sprintf(err_msg
,
291 " Error: Device's Node WWN is not"
292 " found in the WWN list.\n"));
295 case L_NO_NODE_WWN_IN_BOXLIST
:
296 (void) sprintf(err_msg
,
298 " Error: Device's Node WWN is not"
299 " found in the Box list.\n"));
302 case L_NULL_WWN_LIST
:
303 (void) sprintf(err_msg
,
305 " Error: Null WWN list found."));
308 case L_NO_LOOP_ADDRS_FOUND
:
309 (void) sprintf(err_msg
,
311 " Error: Could not find the loop address for "
312 " the device at physical path."));
316 case L_INVLD_PORT_IN_PATH
:
317 (void) sprintf(err_msg
,
319 "Error in the device physical path:"
320 " Invalid port number found."
321 " (Should be 0 or 1)."));
325 case L_INVALID_LOOP_MAP
:
326 (void) sprintf(err_msg
,
328 "Error: Invalid loop map found."));
331 case L_SFIOCGMAP_IOCTL_FAIL
:
332 (void) sprintf(err_msg
,
334 " Error: SFIOCGMAP ioctl failed."
335 " Cannot read loop map."));
338 case L_FCIO_GETMAP_IOCTL_FAIL
:
339 (void) sprintf(err_msg
,
341 " Error: FCIO_GETMAP ioctl failed."
342 " Cannot read loop map."));
345 case L_FCIO_LINKSTATUS_FAILED
:
346 (void) sprintf(err_msg
,
348 " Error: FCIO_LINKSTATUS ioctl failed."
349 " Cannot read loop map."));
352 case L_FCIOGETMAP_INVLD_LEN
:
353 (void) sprintf(err_msg
,
355 " Error: FCIO_GETMAP ioctl returned"
356 " an invalid parameter:"
357 " # entries to large."));
360 case L_FCIO_FORCE_LIP_FAIL
:
361 (void) sprintf(err_msg
,
363 " Error: FCIO_FORCE_LIP ioctl failed."));
366 case L_FCIO_FORCE_LIP_PARTIAL_FAIL
:
367 (void) sprintf(err_msg
,
369 " Error: FCIO_FORCE_LIP ioctl failed on one"
370 " or more (but not all) of the paths."));
373 case L_DWNLD_CHKSUM_FAILED
:
374 (void) sprintf(err_msg
,
376 "Error: Download file checksum failed."));
380 case L_DWNLD_READ_HEADER_FAIL
:
381 (void) sprintf(err_msg
,
383 " Error: Reading download file exec"
387 case L_DWNLD_READ_INCORRECT_BYTES
:
388 (void) sprintf(err_msg
,
390 " Error: Incorrect number of bytes read."));
393 case L_DWNLD_INVALID_TEXT_SIZE
:
394 (void) sprintf(err_msg
,
396 " Error: Reading text segment: "
397 " Found wrong size."));
400 case L_DWNLD_READ_ERROR
:
401 (void) sprintf(err_msg
,
403 " Error: Failed to read download file."));
406 case L_DWNLD_BAD_FRMWARE
:
407 (void) sprintf(err_msg
,
409 " Error: Bad Firmware MAGIC."));
412 case L_DWNLD_TIMED_OUT
:
413 (void) sprintf(err_msg
,
415 " Error: Timed out in 5 minutes"
417 " IB to become available."));
421 (void) sprintf(err_msg
,
423 " Error parsing the Receive"
424 " diagnostic page."));
428 (void) sprintf(err_msg
,
433 (void) sprintf(err_msg
,
435 " Error: No default file. You must specify"
436 " the filename path."));
439 case L_MALLOC_FAILED
:
440 (void) sprintf(err_msg
,
442 " Error: Unable to allocate memory."));
445 case L_LOCALTIME_ERROR
:
446 (void) sprintf(err_msg
,
448 " Error: Could not convert time"
449 " to broken-down time: Hrs/Mins/Secs."));
453 (void) sprintf(err_msg
,
455 " select() error during retry:"
456 " Could not wait for"
457 " specified time."));
460 case L_NO_DISK_DEV_FOUND
:
461 (void) sprintf(err_msg
,
463 " Error: No disk devices found"
468 case L_NO_TAPE_DEV_FOUND
:
469 (void) sprintf(err_msg
,
471 " Error: No tape devices found"
477 (void) sprintf(err_msg
,
479 " lstat() error: Cannot obtain status"
480 " for the device."));
483 case L_SYMLINK_ERROR
:
484 (void) sprintf(err_msg
,
486 " Error: Could not read the symbolic link."));
490 (void) sprintf(err_msg
,
492 " uname() error: Could not obtain the"
493 " architeture of the host machine."));
496 case L_DRVCONFIG_ERROR
:
497 (void) sprintf(err_msg
,
499 " Error: Could not run drvconfig."));
503 (void) sprintf(err_msg
,
505 " Error: Could not run disks."));
508 case L_DEVLINKS_ERROR
:
509 (void) sprintf(err_msg
,
511 " Error: Could not run devlinks."));
514 case L_READ_DEV_DIR_ERROR
:
515 (void) sprintf(err_msg
,
517 " Error: Could not read /dev/rdsk"
521 case L_OPEN_ES_DIR_FAILED
:
522 (void) sprintf(err_msg
,
524 " Error: Could not open /dev/es"
528 case L_LSTAT_ES_DIR_ERROR
:
529 (void) sprintf(err_msg
,
531 " lstat() error: Could not get status"
532 " for /dev/es directory."));
536 (void) sprintf(err_msg
,
538 " Error: Could not offline the device\n"
542 case L_EXCL_OPEN_FAILED
:
543 (void) sprintf(err_msg
,
545 " Error: Could not open device in"
547 " May already be open."));
550 case L_DEVICE_RESERVED
:
551 (void) sprintf(err_msg
,
553 " Error: Disk is reserved."));
556 case L_DISKS_RESERVED
:
557 (void) sprintf(err_msg
,
559 " Error: One or more disks in"
560 " SENA are reserved."));
564 (void) sprintf(err_msg
,
566 " Error: Slot is empty."));
570 (void) sprintf(err_msg
,
572 " Error: Could not acquire"
576 case L_POWER_OFF_FAIL_BUSY
:
577 (void) sprintf(err_msg
,
579 " Error: Could not power off the device.\n"
583 case L_ENCL_NAME_CHANGE_FAIL
:
584 (void) sprintf(err_msg
,
586 " Error: The Enclosure name change failed."));
589 case L_DUPLICATE_ENCLOSURES
:
590 (void) sprintf(err_msg
,
592 " Error: There are two or more enclosures"
593 " with the same name."
594 " Please use a logical or physical"
598 case L_INVALID_NUM_DISKS_ENCL
:
599 (void) sprintf(err_msg
,
601 " Error: The number of disks in the"
602 " front & rear of the enclosure are"
604 " This is not a supported configuration."));
607 case L_ENCL_INVALID_PATH
:
608 (void) sprintf(err_msg
,
610 " Error: Invalid path."
611 " Device is not a SENA subsystem."));
614 case L_NO_ENCL_LIST_FOUND
:
615 (void) sprintf(err_msg
,
617 " Error: Cannot get the Box list."));
620 case L_IB_NO_ELEM_FOUND
:
621 (void) sprintf(err_msg
,
623 " Error: No elements returned from"
624 " enclosure (IB)."));
627 case L_GET_STATUS_FAILED
:
628 (void) sprintf(err_msg
,
630 " Error: Get status failed."));
633 case L_RD_PG_MIN_BUFF
:
634 (void) sprintf(err_msg
,
636 " Error: Reading page from IB.\n"
637 " Buffer size too small."));
640 case L_RD_PG_INVLD_CODE
:
641 (void) sprintf(err_msg
,
643 " Error: Reading page from IB\n"
644 " Invalid page code or page len found."));
647 case L_BP_BUSY_RESERVED
:
648 (void) sprintf(err_msg
,
650 " Error: There is a busy or reserved disk"
651 " attached to this backplane.\n"
652 " You must close the disk,\n"
653 " or release the disk,\n"
654 " or resubmit the command using"
655 " the Force option."));
659 (void) sprintf(err_msg
,
661 " Error: There is a busy disk"
662 " attached to this backplane.\n"
663 " You must close the disk,\n"
664 " or resubmit the command using"
665 " the Force option."));
669 (void) sprintf(err_msg
,
671 " Error: There is a reserved disk"
672 " attached to this backplane.\n"
673 " You must release the disk,\n"
674 " or resubmit the subcommand using"
675 " the Force option."));
678 case L_NO_BP_ELEM_FOUND
:
679 (void) sprintf(err_msg
,
681 " Error: No Back plane elements found"
682 " in the enclosure."));
686 (void) sprintf(err_msg
,
688 " There is a conflict between the "
689 "enclosure name and an SSA name of "
691 " Please use a logical or physical "
696 (void) sprintf(err_msg
,
697 MSGSTR(10078, " Warning:"));
702 (void) sprintf(err_msg
,
704 " Error: Thread join failed."));
707 case L_FCIO_RESET_LINK_FAIL
:
708 (void) sprintf(err_msg
,
710 " Error: FCIO_RESET_LINK ioctl failed.\n"
711 " Could not reset the loop."));
714 case L_FCIO_GET_FCODE_REV_FAIL
:
715 (void) sprintf(err_msg
,
717 " Error: FCIO_GET_FCODE_REV ioctl failed.\n"
718 " Could not get the fcode version."));
721 case L_FCIO_GET_FW_REV_FAIL
:
722 (void) sprintf(err_msg
,
724 " Error: FCIO_GET_FW_REV ioctl failed.\n"
725 " Could not get the firmware revision."));
728 case L_NO_DEVICES_FOUND
:
729 (void) sprintf(err_msg
,
731 " No FC devices found."));
734 case L_INVALID_DEVICE_COUNT
:
735 (void) sprintf(err_msg
,
737 " Error: FCIO_GET_DEV_LIST ioctl returned"
738 " an invalid device count."));
741 case L_FCIO_GET_NUM_DEVS_FAIL
:
742 (void) sprintf(err_msg
,
744 " Error: FCIO_GET_NUM_DEVS ioctl failed.\n"
745 " Could not get the number of devices."));
748 case L_FCIO_GET_DEV_LIST_FAIL
:
749 (void) sprintf(err_msg
,
751 " Error: FCIO_GET_DEV_LIST ioctl failed.\n"
752 " Could not get the device list."));
755 case L_FCIO_GET_LINK_STATUS_FAIL
:
756 (void) sprintf(err_msg
,
758 " Error: FCIO_GET_LINK_STATUS ioctl failed.\n"
759 " Could not get the link status."));
762 case L_PORT_OFFLINE_FAIL
:
763 (void) sprintf(err_msg
,
765 " Error: ioctl to offline the port failed."));
768 case L_PORT_OFFLINE_UNSUPPORTED
:
769 (void) sprintf(err_msg
,
771 " Error: The driver does not support ioctl to"
772 " disable the FCA port."));
775 case L_PORT_ONLINE_FAIL
:
776 (void) sprintf(err_msg
,
778 " Error: ioctl to online the port failed."));
781 case L_PORT_ONLINE_UNSUPPORTED
:
782 (void) sprintf(err_msg
,
784 " Error: The driver does not support ioctl to"
785 " enable the FCA port."));
788 case L_FCP_TGT_INQUIRY_FAIL
:
789 (void) sprintf(err_msg
,
791 " Error: FCP_TGT_INQUIRY ioctl failed.\n"
792 " Could not get the target inquiry data"
797 (void) sprintf(err_msg
,
799 " fstat() error: Cannot obtain status"
800 " for the device."));
803 case L_FCIO_GET_HOST_PARAMS_FAIL
:
804 (void) sprintf(err_msg
,
806 " Error: FCIO_GET_HOST_PARAMS ioctl failed.\n"
807 " Could not get the host parameters."));
811 (void) sprintf(err_msg
,
813 " stat() error: Cannot obtain status"
814 " for the device."));
817 case L_DEV_SNAPSHOT_FAILED
:
818 (void) sprintf(err_msg
,
820 " Error: Could not retrieve device tree"
824 case L_LOOPBACK_UNSUPPORTED
:
825 (void) sprintf(err_msg
,
827 " Error: Loopback mode is unsupported for this"
831 case L_LOOPBACK_FAILED
:
832 (void) sprintf(err_msg
,
834 " Error: Error occurred during loopback mode"
838 case L_FCIO_GET_TOPOLOGY_FAIL
:
839 (void) sprintf(err_msg
,
841 " Error: FCIO_GET_TOPOLOGY ioctl failed.\n"
842 " Could not get the fca port topology."));
845 case L_UNEXPECTED_FC_TOPOLOGY
:
846 (void) sprintf(err_msg
,
848 " Error: Unexpected Fibre Channel topology"
852 case L_INVALID_PRIVATE_LOOP_ADDRESS
:
853 (void) sprintf(err_msg
,
855 " Error: AL_PA is not a valid private loop"
859 case L_NO_FABRIC_ADDR_FOUND
:
860 (void) sprintf(err_msg
,
862 " Error: Could not find the fabric address"
863 " for the device at physical path."));
866 case L_INVALID_FABRIC_ADDRESS
:
867 (void) sprintf(err_msg
,
869 " Error: Device port address on the Fabric"
870 " topology is not valid."));
873 case L_PT_PT_FC_TOP_NOT_SUPPORTED
:
874 (void) sprintf(err_msg
,
876 " Error: Point to Point Fibre Channel "
877 "topology is currently not supported."));
880 case L_FCIO_DEV_LOGIN_FAIL
:
881 (void) sprintf(err_msg
,
883 " Error: FCIO_DEV_LOGIN ioctl failed."));
886 case L_FCIO_DEV_LOGOUT_FAIL
:
887 (void) sprintf(err_msg
,
889 " Error: FCIO_DEV_LOGOUT ioctl failed."));
892 case L_OPNOSUPP_ON_TOPOLOGY
:
893 (void) sprintf(err_msg
,
895 " Error: operation not supported "
896 "on connected topology."));
899 case L_INVALID_PATH_TYPE
:
900 (void) sprintf(err_msg
,
902 " Error: operation not supported "
906 case L_FCIO_GET_STATE_FAIL
:
907 (void) sprintf(err_msg
,
909 " Error: FCIO_GET_STATE ioctl failed."));
912 case L_WWN_NOT_FOUND_IN_DEV_LIST
:
913 (void) sprintf(err_msg
,
915 " Error: device WWN not found in "
919 case L_STAT_RMT_DIR_ERROR
:
920 (void) sprintf(err_msg
,
922 " stat() error: Could not get status"
923 " for /dev/rmt directory."));
926 case L_STAT_DEV_DIR_ERROR
:
927 (void) sprintf(err_msg
,
929 " stat() error: Could not get status"
930 " for /dev/dsk directory."));
933 case L_PROM_INIT_FAILED
:
934 (void) sprintf(err_msg
,
936 " Error: di_prom_init failure"));
939 case L_PORT_DRIVER_NOT_FOUND
:
940 (void) sprintf(err_msg
,
942 " Error: requested port driver"
946 case L_PHYS_PATH_NOT_FOUND
:
947 (void) sprintf(err_msg
,
949 " Error: requested phys path does not exist"));
952 case L_GET_DEV_LIST_ULP_FAILURE
:
953 (void) sprintf(err_msg
,
955 " Error: g_get_dev_list failed on ULP "
956 "processing of target device(s)"));
959 case L_SCSI_VHCI_ERROR
:
960 (void) sprintf(err_msg
,
962 " Error: Unable to perform failover"));
965 case L_SCSI_VHCI_ALREADY_ACTIVE
:
966 (void) sprintf(err_msg
,
968 " Error: Pathclass already active"));
972 (void) sprintf(err_msg
,
974 " Error: No device identifier found"));
977 case L_DRIVER_NOTSUPP
:
978 (void) sprintf(err_msg
,
980 " Error: Driver not supported"));
983 case L_PROC_WWN_ARG_ERROR
:
984 (void) sprintf(err_msg
,
986 " Error: process WWN argument"));
989 case L_NO_WWN_PROP_FOUND
:
990 (void) sprintf(err_msg
,
992 " Error: WWN prop not found"));
995 case L_NO_DRIVER_NODES_FOUND
:
996 (void) sprintf(err_msg
,
998 " Error: Requested driver nodes not found"));
1001 case L_INVALID_MAP_DEV_ADDR
:
1002 (void) sprintf(err_msg
,
1004 " Error: Invalid map device handle found"));
1007 case L_INVALID_MAP_DEV_PROP_TYPE
:
1008 (void) sprintf(err_msg
,
1010 " Error: Invalid device property type found"));
1013 case L_INVALID_MAP_DEV_PROP_NAME
:
1014 (void) sprintf(err_msg
,
1016 " Error: Invalid device property name found"));
1019 case L_INVALID_MAP_DEV_PROP
:
1020 (void) sprintf(err_msg
,
1022 " Error: Invalid device property handle "
1026 case L_SCSI_VHCI_NO_STANDBY
:
1027 (void) sprintf(err_msg
,
1029 " Error: Unable to perform failover, "
1030 "standby path unavailable"));
1033 case L_SCSI_VHCI_FAILOVER_NOTSUP
:
1034 (void) sprintf(err_msg
,
1036 " Error: Device does not support failover"));
1039 case L_SCSI_VHCI_FAILOVER_BUSY
:
1040 (void) sprintf(err_msg
,
1042 " Error: Failover currently in progress"));
1045 case L_NO_SUCH_DEV_FOUND
:
1046 (void) sprintf(err_msg
,
1048 " Error: No such device found"));
1051 case L_NO_SUCH_PROP_FOUND
:
1052 (void) sprintf(err_msg
,
1054 " Error: No such property found"));
1058 (void) sprintf(err_msg
,
1060 " Error: Invalid argument found"));
1065 if (((L_SCSI_ERROR
^ errornum
) == STATUS_GOOD
) ||
1066 ((L_SCSI_ERROR
^ errornum
) == STATUS_BUSY
) ||
1067 ((L_SCSI_ERROR
^ errornum
) == STATUS_CHECK
) ||
1068 ((L_SCSI_ERROR
^ errornum
) == STATUS_MET
) ||
1069 ((L_SCSI_ERROR
^ errornum
) == STATUS_INTERMEDIATE
) ||
1070 ((L_SCSI_ERROR
^ errornum
) == STATUS_INTERMEDIATE_MET
) ||
1071 ((L_SCSI_ERROR
^ errornum
) == STATUS_RESERVATION_CONFLICT
) ||
1072 ((L_SCSI_ERROR
^ errornum
) == STATUS_TERMINATED
) ||
1073 ((L_SCSI_ERROR
^ errornum
) == STATUS_QFULL
)) {
1074 (void) sprintf(err_msg
,
1076 " SCSI Error - Sense Byte:(0x%x) %s \n"
1077 " Error: Retry failed."),
1078 (L_SCSI_ERROR
^ errornum
) & STATUS_MASK
,
1079 decode_sense_byte((uchar_t
)L_SCSI_ERROR
^ errornum
));
1081 (void) sprintf(err_msg
,
1083 " Error: could not decode the"
1085 " The given error message is not"
1086 " defined in the library.\n"
1087 " Message number: %d.\n"), errornum
);
1090 } /* end of switch */
1092 errStrg
= g_alloc_string(err_msg
);