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 * I18N message number ranges
31 * This file: 10000 - 10499
32 * Shared common messages: 1 - 1999
35 /* #define _POSIX_SOURCE 1 */
43 #include <sys/scsi/scsi.h>
47 #include "errorcodes.h"
55 * Allocate space for and return a pointer to a string
56 * on the stack. If the string is null, create
65 ns
= (char *)calloc(1, 1);
67 ns
= (char *)calloc(1, strlen(s
) + 1);
69 (void) strncpy(ns
, s
, (strlen(s
) + 1));
77 * Decodes the SCSI sense byte to a string.
83 decode_sense_byte(uchar_t status
)
85 switch (status
& STATUS_MASK
) {
87 return (MSGSTR(10000, "Good status"));
90 return (MSGSTR(128, "Check condition"));
93 return (MSGSTR(124, "Condition met"));
96 return (MSGSTR(37, "Busy"));
98 case STATUS_INTERMEDIATE
:
99 return (MSGSTR(10001, "Intermediate"));
101 case STATUS_INTERMEDIATE_MET
:
102 return (MSGSTR(10002, "Intermediate - condition met"));
104 case STATUS_RESERVATION_CONFLICT
:
105 return (MSGSTR(10003, "Reservation_conflict"));
107 case STATUS_TERMINATED
:
108 return (MSGSTR(126, "Command terminated"));
111 return (MSGSTR(83, "Queue full"));
114 return (MSGSTR(4, "Unknown status"));
120 * This function finds a predefined error string to a given
121 * error number (errornum), allocates memory for the string
122 * and returns the corresponding error message to the caller.
125 * error string if O.K.
129 *get_errString(int errornum
)
131 char err_msg
[MAXLEN
], *errStrg
;
133 err_msg
[0] = '\0'; /* Just in case */
134 if (errornum
< L_BASE
) {
135 /* Some sort of random system error most likely */
136 errStrg
= strerror(errno
);
137 if (errStrg
!= NULL
) {
138 (void) strcpy(err_msg
, errStrg
);
139 } else { /* Something's _really_ messed up */
140 (void) sprintf(err_msg
,
142 " Error: could not decode the"
144 " The given error message is not"
145 " defined in the library.\n"
146 " Message number: %d.\n"), errornum
);
149 /* Make sure ALL CASES set err_msg to something */
150 } else switch (errornum
) {
152 (void) sprintf(err_msg
,
154 " Error: SCSI failure."));
157 case L_PR_INVLD_TRNSFR_LEN
:
158 (void) sprintf(err_msg
,
160 " Error: Persistant Reserve command"
161 " transfer length not word aligned."));
164 case L_RD_NO_DISK_ELEM
:
165 (void) sprintf(err_msg
,
167 " Error: Could not find the disk elements"
168 " in the Receive Diagnostic pages."));
171 case L_RD_INVLD_TRNSFR_LEN
:
172 (void) sprintf(err_msg
,
174 " Error: Receive Diagnostic command"
175 " transfer length not word aligned."));
178 case L_ILLEGAL_MODE_SENSE_PAGE
:
179 (void) sprintf(err_msg
,
181 " Error: Programming error - "
182 "illegal Mode Sense parameter."));
185 case L_INVALID_NO_OF_ENVSEN_PAGES
:
186 (void) sprintf(err_msg
,
188 " Error: Invalid no. of sense pages.\n"
189 " Could not get valid sense page"
190 " information from the device."));
193 case L_INVALID_BUF_LEN
:
194 (void) sprintf(err_msg
,
196 " Error: Invalid buffer length.\n"
197 " Could not get diagnostic "
198 " information from the device."));
202 (void) sprintf(err_msg
,
204 " Error: Invalid pathname"));
208 (void) sprintf(err_msg
,
210 " Error: Could not get"
211 " physical path to the device."));
215 (void) sprintf(err_msg
,
217 " Error: No SES found"
218 " for the device path."));
221 case L_INVLD_PATH_NO_SLASH_FND
:
222 (void) sprintf(err_msg
,
224 "Error in the device physical path."));
227 case L_INVLD_PATH_NO_ATSIGN_FND
:
228 (void) sprintf(err_msg
,
230 " Error in the device physical path:"
235 (void) sprintf(err_msg
,
237 " Error: Invalid path format."
241 case L_INVALID_LED_RQST
:
242 (void) sprintf(err_msg
,
244 " Error: Invalid LED request."));
247 case L_INVALID_PATH_FORMAT
:
248 (void) sprintf(err_msg
,
250 " Error: Invalid path format."));
253 case L_OPEN_PATH_FAIL
:
254 (void) sprintf(err_msg
,
256 " Error opening the path."));
259 case L_INVALID_PASSWORD_LEN
:
260 (void) sprintf(err_msg
,
262 "Error: Invalid password length."));
265 case L_INVLD_PHYS_PATH_TO_DISK
:
266 (void) sprintf(err_msg
,
268 " Error: Physical path not of a disk."));
271 case L_INVLD_ID_FOUND
:
272 (void) sprintf(err_msg
,
274 " Error in the device physical path:"
275 " Invalid ID found in the path."));
278 case L_INVLD_WWN_FORMAT
:
279 (void) sprintf(err_msg
,
281 " Error in the device physical path:"
282 " Invalid wwn format."));
286 case L_NO_VALID_PATH
:
287 (void) sprintf(err_msg
,
289 " Error: Could not find valid path to"
293 case L_NO_WWN_FOUND_IN_PATH
:
294 (void) sprintf(err_msg
,
296 " Error in the device physical path:"
301 case L_NO_NODE_WWN_IN_WWNLIST
:
302 (void) sprintf(err_msg
,
304 " Error: Device's Node WWN is not"
305 " found in the WWN list.\n"));
308 case L_NO_NODE_WWN_IN_BOXLIST
:
309 (void) sprintf(err_msg
,
311 " Error: Device's Node WWN is not"
312 " found in the Box list.\n"));
315 case L_NULL_WWN_LIST
:
316 (void) sprintf(err_msg
,
318 " Error: Null WWN list found."));
321 case L_NO_LOOP_ADDRS_FOUND
:
322 (void) sprintf(err_msg
,
324 " Error: Could not find the loop address for "
325 " the device at physical path."));
329 case L_INVLD_PORT_IN_PATH
:
330 (void) sprintf(err_msg
,
332 "Error in the device physical path:"
333 " Invalid port number found."
334 " (Should be 0 or 1)."));
338 case L_INVALID_LOOP_MAP
:
339 (void) sprintf(err_msg
,
341 "Error: Invalid loop map found."));
344 case L_SFIOCGMAP_IOCTL_FAIL
:
345 (void) sprintf(err_msg
,
347 " Error: SFIOCGMAP ioctl failed."
348 " Cannot read loop map."));
351 case L_FCIO_GETMAP_IOCTL_FAIL
:
352 (void) sprintf(err_msg
,
354 " Error: FCIO_GETMAP ioctl failed."
355 " Cannot read loop map."));
358 case L_FCIO_LINKSTATUS_FAILED
:
359 (void) sprintf(err_msg
,
361 " Error: FCIO_LINKSTATUS ioctl failed."
362 " Cannot read loop map."));
365 case L_FCIOGETMAP_INVLD_LEN
:
366 (void) sprintf(err_msg
,
368 " Error: FCIO_GETMAP ioctl returned"
369 " an invalid parameter:"
370 " # entries to large."));
373 case L_FCIO_FORCE_LIP_FAIL
:
374 (void) sprintf(err_msg
,
376 " Error: FCIO_FORCE_LIP ioctl failed."));
379 case L_FCIO_FORCE_LIP_PARTIAL_FAIL
:
380 (void) sprintf(err_msg
,
382 " Error: FCIO_FORCE_LIP ioctl failed on one"
383 " or more (but not all) of the paths."));
386 case L_DWNLD_CHKSUM_FAILED
:
387 (void) sprintf(err_msg
,
389 "Error: Download file checksum failed."));
393 case L_DWNLD_READ_HEADER_FAIL
:
394 (void) sprintf(err_msg
,
396 " Error: Reading download file exec"
400 case L_DWNLD_READ_INCORRECT_BYTES
:
401 (void) sprintf(err_msg
,
403 " Error: Incorrect number of bytes read."));
406 case L_DWNLD_INVALID_TEXT_SIZE
:
407 (void) sprintf(err_msg
,
409 " Error: Reading text segment: "
410 " Found wrong size."));
413 case L_DWNLD_READ_ERROR
:
414 (void) sprintf(err_msg
,
416 " Error: Failed to read download file."));
419 case L_DWNLD_BAD_FRMWARE
:
420 (void) sprintf(err_msg
,
422 " Error: Bad Firmware MAGIC."));
425 case L_DWNLD_TIMED_OUT
:
426 (void) sprintf(err_msg
,
428 " Error: Timed out in 5 minutes"
430 " IB to become available."));
434 (void) sprintf(err_msg
,
436 " Error parsing the Receive"
437 " diagnostic page."));
441 (void) sprintf(err_msg
,
446 (void) sprintf(err_msg
,
448 " Error: No default file. You must specify"
449 " the filename path."));
452 case L_MALLOC_FAILED
:
453 (void) sprintf(err_msg
,
455 " Error: Unable to allocate memory."));
458 case L_LOCALTIME_ERROR
:
459 (void) sprintf(err_msg
,
461 " Error: Could not convert time"
462 " to broken-down time: Hrs/Mins/Secs."));
466 (void) sprintf(err_msg
,
468 " select() error during retry:"
469 " Could not wait for"
470 " specified time."));
473 case L_NO_DISK_DEV_FOUND
:
474 (void) sprintf(err_msg
,
476 " Error: No disk devices found"
481 case L_NO_TAPE_DEV_FOUND
:
482 (void) sprintf(err_msg
,
484 " Error: No tape devices found"
490 (void) sprintf(err_msg
,
492 " lstat() error: Cannot obtain status"
493 " for the device."));
496 case L_SYMLINK_ERROR
:
497 (void) sprintf(err_msg
,
499 " Error: Could not read the symbolic link."));
503 (void) sprintf(err_msg
,
505 " uname() error: Could not obtain the"
506 " architeture of the host machine."));
509 case L_DRVCONFIG_ERROR
:
510 (void) sprintf(err_msg
,
512 " Error: Could not run drvconfig."));
516 (void) sprintf(err_msg
,
518 " Error: Could not run disks."));
521 case L_DEVLINKS_ERROR
:
522 (void) sprintf(err_msg
,
524 " Error: Could not run devlinks."));
527 case L_READ_DEV_DIR_ERROR
:
528 (void) sprintf(err_msg
,
530 " Error: Could not read /dev/rdsk"
534 case L_OPEN_ES_DIR_FAILED
:
535 (void) sprintf(err_msg
,
537 " Error: Could not open /dev/es"
541 case L_LSTAT_ES_DIR_ERROR
:
542 (void) sprintf(err_msg
,
544 " lstat() error: Could not get status"
545 " for /dev/es directory."));
549 (void) sprintf(err_msg
,
551 " Error: Could not offline the device\n"
555 case L_EXCL_OPEN_FAILED
:
556 (void) sprintf(err_msg
,
558 " Error: Could not open device in"
560 " May already be open."));
563 case L_DEVICE_RESERVED
:
564 (void) sprintf(err_msg
,
566 " Error: Disk is reserved."));
569 case L_DISKS_RESERVED
:
570 (void) sprintf(err_msg
,
572 " Error: One or more disks in"
573 " SENA are reserved."));
577 (void) sprintf(err_msg
,
579 " Error: Slot is empty."));
583 (void) sprintf(err_msg
,
585 " Error: Could not acquire"
589 case L_POWER_OFF_FAIL_BUSY
:
590 (void) sprintf(err_msg
,
592 " Error: Could not power off the device.\n"
596 case L_ENCL_NAME_CHANGE_FAIL
:
597 (void) sprintf(err_msg
,
599 " Error: The Enclosure name change failed."));
602 case L_DUPLICATE_ENCLOSURES
:
603 (void) sprintf(err_msg
,
605 " Error: There are two or more enclosures"
606 " with the same name."
607 " Please use a logical or physical"
611 case L_INVALID_NUM_DISKS_ENCL
:
612 (void) sprintf(err_msg
,
614 " Error: The number of disks in the"
615 " front & rear of the enclosure are"
617 " This is not a supported configuration."));
620 case L_ENCL_INVALID_PATH
:
621 (void) sprintf(err_msg
,
623 " Error: Invalid path."
624 " Device is not a SENA subsystem."));
627 case L_NO_ENCL_LIST_FOUND
:
628 (void) sprintf(err_msg
,
630 " Error: Cannot get the Box list."));
633 case L_IB_NO_ELEM_FOUND
:
634 (void) sprintf(err_msg
,
636 " Error: No elements returned from"
637 " enclosure (IB)."));
640 case L_GET_STATUS_FAILED
:
641 (void) sprintf(err_msg
,
643 " Error: Get status failed."));
646 case L_RD_PG_MIN_BUFF
:
647 (void) sprintf(err_msg
,
649 " Error: Reading page from IB.\n"
650 " Buffer size too small."));
653 case L_RD_PG_INVLD_CODE
:
654 (void) sprintf(err_msg
,
656 " Error: Reading page from IB\n"
657 " Invalid page code or page len found."));
660 case L_BP_BUSY_RESERVED
:
661 (void) sprintf(err_msg
,
663 " Error: There is a busy or reserved disk"
664 " attached to this backplane.\n"
665 " You must close the disk,\n"
666 " or release the disk,\n"
667 " or resubmit the command using"
668 " the Force option."));
672 (void) sprintf(err_msg
,
674 " Error: There is a busy disk"
675 " attached to this backplane.\n"
676 " You must close the disk,\n"
677 " or resubmit the command using"
678 " the Force option."));
682 (void) sprintf(err_msg
,
684 " Error: There is a reserved disk"
685 " attached to this backplane.\n"
686 " You must release the disk,\n"
687 " or resubmit the subcommand using"
688 " the Force option."));
691 case L_NO_BP_ELEM_FOUND
:
692 (void) sprintf(err_msg
,
694 " Error: No Back plane elements found"
695 " in the enclosure."));
699 (void) sprintf(err_msg
,
701 " There is a conflict between the "
702 "enclosure name and an SSA name of "
704 " Please use a logical or physical "
709 (void) sprintf(err_msg
,
710 MSGSTR(10078, " Warning:"));
715 (void) sprintf(err_msg
,
717 " Error: Thread join failed."));
720 case L_FCIO_RESET_LINK_FAIL
:
721 (void) sprintf(err_msg
,
723 " Error: FCIO_RESET_LINK ioctl failed.\n"
724 " Could not reset the loop."));
727 case L_FCIO_GET_FCODE_REV_FAIL
:
728 (void) sprintf(err_msg
,
730 " Error: FCIO_GET_FCODE_REV ioctl failed.\n"
731 " Could not get the fcode version."));
734 case L_FCIO_GET_FW_REV_FAIL
:
735 (void) sprintf(err_msg
,
737 " Error: FCIO_GET_FW_REV ioctl failed.\n"
738 " Could not get the firmware revision."));
741 case L_NO_DEVICES_FOUND
:
742 (void) sprintf(err_msg
,
744 " No FC devices found."));
747 case L_INVALID_DEVICE_COUNT
:
748 (void) sprintf(err_msg
,
750 " Error: FCIO_GET_DEV_LIST ioctl returned"
751 " an invalid device count."));
754 case L_FCIO_GET_NUM_DEVS_FAIL
:
755 (void) sprintf(err_msg
,
757 " Error: FCIO_GET_NUM_DEVS ioctl failed.\n"
758 " Could not get the number of devices."));
761 case L_FCIO_GET_DEV_LIST_FAIL
:
762 (void) sprintf(err_msg
,
764 " Error: FCIO_GET_DEV_LIST ioctl failed.\n"
765 " Could not get the device list."));
768 case L_FCIO_GET_LINK_STATUS_FAIL
:
769 (void) sprintf(err_msg
,
771 " Error: FCIO_GET_LINK_STATUS ioctl failed.\n"
772 " Could not get the link status."));
775 case L_PORT_OFFLINE_FAIL
:
776 (void) sprintf(err_msg
,
778 " Error: ioctl to offline the port failed."));
781 case L_PORT_OFFLINE_UNSUPPORTED
:
782 (void) sprintf(err_msg
,
784 " Error: The driver does not support ioctl to"
785 " disable the FCA port."));
788 case L_PORT_ONLINE_FAIL
:
789 (void) sprintf(err_msg
,
791 " Error: ioctl to online the port failed."));
794 case L_PORT_ONLINE_UNSUPPORTED
:
795 (void) sprintf(err_msg
,
797 " Error: The driver does not support ioctl to"
798 " enable the FCA port."));
801 case L_FCP_TGT_INQUIRY_FAIL
:
802 (void) sprintf(err_msg
,
804 " Error: FCP_TGT_INQUIRY ioctl failed.\n"
805 " Could not get the target inquiry data"
810 (void) sprintf(err_msg
,
812 " fstat() error: Cannot obtain status"
813 " for the device."));
816 case L_FCIO_GET_HOST_PARAMS_FAIL
:
817 (void) sprintf(err_msg
,
819 " Error: FCIO_GET_HOST_PARAMS ioctl failed.\n"
820 " Could not get the host parameters."));
824 (void) sprintf(err_msg
,
826 " stat() error: Cannot obtain status"
827 " for the device."));
830 case L_DEV_SNAPSHOT_FAILED
:
831 (void) sprintf(err_msg
,
833 " Error: Could not retrieve device tree"
837 case L_LOOPBACK_UNSUPPORTED
:
838 (void) sprintf(err_msg
,
840 " Error: Loopback mode is unsupported for this"
844 case L_LOOPBACK_FAILED
:
845 (void) sprintf(err_msg
,
847 " Error: Error occurred during loopback mode"
851 case L_FCIO_GET_TOPOLOGY_FAIL
:
852 (void) sprintf(err_msg
,
854 " Error: FCIO_GET_TOPOLOGY ioctl failed.\n"
855 " Could not get the fca port topology."));
858 case L_UNEXPECTED_FC_TOPOLOGY
:
859 (void) sprintf(err_msg
,
861 " Error: Unexpected Fibre Channel topology"
865 case L_INVALID_PRIVATE_LOOP_ADDRESS
:
866 (void) sprintf(err_msg
,
868 " Error: AL_PA is not a valid private loop"
872 case L_NO_FABRIC_ADDR_FOUND
:
873 (void) sprintf(err_msg
,
875 " Error: Could not find the fabric address"
876 " for the device at physical path."));
879 case L_INVALID_FABRIC_ADDRESS
:
880 (void) sprintf(err_msg
,
882 " Error: Device port address on the Fabric"
883 " topology is not valid."));
886 case L_PT_PT_FC_TOP_NOT_SUPPORTED
:
887 (void) sprintf(err_msg
,
889 " Error: Point to Point Fibre Channel "
890 "topology is currently not supported."));
893 case L_FCIO_DEV_LOGIN_FAIL
:
894 (void) sprintf(err_msg
,
896 " Error: FCIO_DEV_LOGIN ioctl failed."));
899 case L_FCIO_DEV_LOGOUT_FAIL
:
900 (void) sprintf(err_msg
,
902 " Error: FCIO_DEV_LOGOUT ioctl failed."));
905 case L_OPNOSUPP_ON_TOPOLOGY
:
906 (void) sprintf(err_msg
,
908 " Error: operation not supported "
909 "on connected topology."));
912 case L_INVALID_PATH_TYPE
:
913 (void) sprintf(err_msg
,
915 " Error: operation not supported "
919 case L_FCIO_GET_STATE_FAIL
:
920 (void) sprintf(err_msg
,
922 " Error: FCIO_GET_STATE ioctl failed."));
925 case L_WWN_NOT_FOUND_IN_DEV_LIST
:
926 (void) sprintf(err_msg
,
928 " Error: device WWN not found in "
932 case L_STAT_RMT_DIR_ERROR
:
933 (void) sprintf(err_msg
,
935 " stat() error: Could not get status"
936 " for /dev/rmt directory."));
939 case L_STAT_DEV_DIR_ERROR
:
940 (void) sprintf(err_msg
,
942 " stat() error: Could not get status"
943 " for /dev/dsk directory."));
946 case L_PROM_INIT_FAILED
:
947 (void) sprintf(err_msg
,
949 " Error: di_prom_init failure"));
952 case L_PORT_DRIVER_NOT_FOUND
:
953 (void) sprintf(err_msg
,
955 " Error: requested port driver"
959 case L_PHYS_PATH_NOT_FOUND
:
960 (void) sprintf(err_msg
,
962 " Error: requested phys path does not exist"));
965 case L_GET_DEV_LIST_ULP_FAILURE
:
966 (void) sprintf(err_msg
,
968 " Error: g_get_dev_list failed on ULP "
969 "processing of target device(s)"));
972 case L_SCSI_VHCI_ERROR
:
973 (void) sprintf(err_msg
,
975 " Error: Unable to perform failover"));
978 case L_SCSI_VHCI_ALREADY_ACTIVE
:
979 (void) sprintf(err_msg
,
981 " Error: Pathclass already active"));
985 (void) sprintf(err_msg
,
987 " Error: No device identifier found"));
990 case L_DRIVER_NOTSUPP
:
991 (void) sprintf(err_msg
,
993 " Error: Driver not supported"));
996 case L_PROC_WWN_ARG_ERROR
:
997 (void) sprintf(err_msg
,
999 " Error: process WWN argument"));
1002 case L_NO_WWN_PROP_FOUND
:
1003 (void) sprintf(err_msg
,
1005 " Error: WWN prop not found"));
1008 case L_NO_DRIVER_NODES_FOUND
:
1009 (void) sprintf(err_msg
,
1011 " Error: Requested driver nodes not found"));
1014 case L_INVALID_MAP_DEV_ADDR
:
1015 (void) sprintf(err_msg
,
1017 " Error: Invalid map device handle found"));
1020 case L_INVALID_MAP_DEV_PROP_TYPE
:
1021 (void) sprintf(err_msg
,
1023 " Error: Invalid device property type found"));
1026 case L_INVALID_MAP_DEV_PROP_NAME
:
1027 (void) sprintf(err_msg
,
1029 " Error: Invalid device property name found"));
1032 case L_INVALID_MAP_DEV_PROP
:
1033 (void) sprintf(err_msg
,
1035 " Error: Invalid device property handle "
1039 case L_SCSI_VHCI_NO_STANDBY
:
1040 (void) sprintf(err_msg
,
1042 " Error: Unable to perform failover, "
1043 "standby path unavailable"));
1046 case L_SCSI_VHCI_FAILOVER_NOTSUP
:
1047 (void) sprintf(err_msg
,
1049 " Error: Device does not support failover"));
1052 case L_SCSI_VHCI_FAILOVER_BUSY
:
1053 (void) sprintf(err_msg
,
1055 " Error: Failover currently in progress"));
1058 case L_NO_SUCH_DEV_FOUND
:
1059 (void) sprintf(err_msg
,
1061 " Error: No such device found"));
1064 case L_NO_SUCH_PROP_FOUND
:
1065 (void) sprintf(err_msg
,
1067 " Error: No such property found"));
1071 (void) sprintf(err_msg
,
1073 " Error: Invalid argument found"));
1078 if (((L_SCSI_ERROR
^ errornum
) == STATUS_GOOD
) ||
1079 ((L_SCSI_ERROR
^ errornum
) == STATUS_BUSY
) ||
1080 ((L_SCSI_ERROR
^ errornum
) == STATUS_CHECK
) ||
1081 ((L_SCSI_ERROR
^ errornum
) == STATUS_MET
) ||
1082 ((L_SCSI_ERROR
^ errornum
) == STATUS_INTERMEDIATE
) ||
1083 ((L_SCSI_ERROR
^ errornum
) == STATUS_INTERMEDIATE_MET
) ||
1084 ((L_SCSI_ERROR
^ errornum
) == STATUS_RESERVATION_CONFLICT
) ||
1085 ((L_SCSI_ERROR
^ errornum
) == STATUS_TERMINATED
) ||
1086 ((L_SCSI_ERROR
^ errornum
) == STATUS_QFULL
)) {
1087 (void) sprintf(err_msg
,
1089 " SCSI Error - Sense Byte:(0x%x) %s \n"
1090 " Error: Retry failed."),
1091 (L_SCSI_ERROR
^ errornum
) & STATUS_MASK
,
1092 decode_sense_byte((uchar_t
)L_SCSI_ERROR
^ errornum
));
1094 (void) sprintf(err_msg
,
1096 " Error: could not decode the"
1098 " The given error message is not"
1099 " defined in the library.\n"
1100 " Message number: %d.\n"), errornum
);
1103 } /* end of switch */
1105 errStrg
= alloc_string(err_msg
);