480 cmdvec++;
481 }
482 return (sprintf(scsi_tmpname, "<undecoded cmd 0x%x>", cmd));
483 }
484
485 char *
486 scsi_cmd_name(uchar_t cmd, struct scsi_key_strings *cmdlist, char *tmpstr)
487 {
488 int i = 0;
489
490 while (cmdlist[i].key != -1) {
491 if (cmd == cmdlist[i].key) {
492 return ((char *)cmdlist[i].message);
493 }
494 i++;
495 }
496 return (sprintf(tmpstr, "<undecoded cmd 0x%x>", cmd));
497 }
498
499 static struct scsi_asq_key_strings extended_sense_list[] = {
500 0x00, 0x00, "no additional sense info",
501 0x00, 0x01, "filemark detected",
502 0x00, 0x02, "end of partition/medium detected",
503 0x00, 0x03, "setmark detected",
504 0x00, 0x04, "beginning of partition/medium detected",
505 0x00, 0x05, "end of data detected",
506 0x00, 0x06, "i/o process terminated",
507 0x00, 0x11, "audio play operation in progress",
508 0x00, 0x12, "audio play operation paused",
509 0x00, 0x13, "audio play operation successfully completed",
510 0x00, 0x14, "audio play operation stopped due to error",
511 0x00, 0x15, "no current audio status to return",
512 0x00, 0x16, "operation in progress",
513 0x00, 0x17, "cleaning requested",
514 0x00, 0x18, "erase operation in progress",
515 0x00, 0x19, "locate operation in progress",
516 0x00, 0x1A, "rewind operation in progress",
517 0x00, 0x1B, "set capacity operation in progress",
518 0x00, 0x1C, "verify operation in progress",
519 0x00, 0x1D, "ATA passthrough information available",
520 0x01, 0x00, "no index/sector signal",
521 0x02, 0x00, "no seek complete",
522 0x03, 0x00, "peripheral device write fault",
523 0x03, 0x01, "no write current",
524 0x03, 0x02, "excessive write errors",
525 0x04, 0x00, "LUN not ready",
526 0x04, 0x01, "LUN is becoming ready",
527 0x04, 0x02, "LUN initializing command required",
528 0x04, 0x03, "LUN not ready intervention required",
529 0x04, 0x04, "LUN not ready format in progress",
530 0x04, 0x05, "LUN not ready, rebuild in progress",
531 0x04, 0x06, "LUN not ready, recalculation in progress",
532 0x04, 0x07, "LUN not ready, operation in progress",
533 0x04, 0x08, "LUN not ready, long write in progress",
534 0x04, 0x09, "LUN not ready, self-test in progress",
535 0x04, 0x0A, "LUN not accessible, asymmetric access state transition",
536 0x04, 0x0B, "LUN not accessible, target port in standby state",
537 0x04, 0x0C, "LUN not accessible, target port in unavailable state",
538 0x04, 0x10, "LUN not ready, auxiliary memory not accessible",
539 0x05, 0x00, "LUN does not respond to selection",
540 0x06, 0x00, "reference position found",
541 0x07, 0x00, "multiple peripheral devices selected",
542 0x08, 0x00, "LUN communication failure",
543 0x08, 0x01, "LUN communication time-out",
544 0x08, 0x02, "LUN communication parity error",
545 0x08, 0x03, "LUN communication crc error (ultra-DMA/32)",
546 0x08, 0x04, "unreachable copy target",
547 0x09, 0x00, "track following error",
548 0x09, 0x01, "tracking servo failure",
549 0x09, 0x02, "focus servo failure",
550 0x09, 0x03, "spindle servo failure",
551 0x09, 0x04, "head select fault",
552 0x0a, 0x00, "error log overflow",
553 0x0b, 0x00, "warning",
554 0x0b, 0x01, "warning - specified temperature exceeded",
555 0x0b, 0x02, "warning - enclosure degraded",
556 0x0c, 0x00, "write error",
557 0x0c, 0x01, "write error - recovered with auto reallocation",
558 0x0c, 0x02, "write error - auto reallocation failed",
559 0x0c, 0x03, "write error - recommend reassignment",
560 0x0c, 0x04, "compression check miscompare error",
561 0x0c, 0x05, "data expansion occurred during compression",
562 0x0c, 0x06, "block not compressible",
563 0x0c, 0x07, "write error - recovery needed",
564 0x0c, 0x08, "write error - recovery failed",
565 0x0c, 0x09, "write error - loss of streaming",
566 0x0c, 0x0a, "write error - padding blocks added",
567 0x0c, 0x0b, "auxiliary memory write error",
568 0x0c, 0x0c, "write error - unexpected unsolicited data",
569 0x0c, 0x0d, "write error - not enough unsolicited data",
570 0x0d, 0x00, "error detected by third party temporary initiator",
571 0x0d, 0x01, "third party device failure",
572 0x0d, 0x02, "copy target device not reachable",
573 0x0d, 0x03, "incorrect copy target device type",
574 0x0d, 0x04, "copy target device data underrun",
575 0x0d, 0x05, "copy target device data overrun",
576 0x0e, 0x00, "invalid information unit",
577 0x0e, 0x01, "information unit too short",
578 0x0e, 0x02, "information unit too long",
579 0x10, 0x00, "ID CRC or ECC error",
580 0x11, 0x00, "unrecovered read error",
581 0x11, 0x01, "read retries exhausted",
582 0x11, 0x02, "error too long to correct",
583 0x11, 0x03, "multiple read errors",
584 0x11, 0x04, "unrecovered read error - auto reallocate failed",
585 0x11, 0x05, "L-EC uncorrectable error",
586 0x11, 0x06, "CIRC unrecovered error",
587 0x11, 0x07, "data re-synchronization error",
588 0x11, 0x08, "incomplete block read",
589 0x11, 0x09, "no gap found",
590 0x11, 0x0a, "miscorrected error",
591 0x11, 0x0b, "unrecovered read error - recommend reassignment",
592 0x11, 0x0c, "unrecovered read error - recommend rewrite the data",
593 0x11, 0x0d, "de-compression crc error",
594 0x11, 0x0e, "cannot decompress using declared algorithm",
595 0x11, 0x0f, "error reading UPC/EAN number",
596 0x11, 0x10, "error reading ISRC number",
597 0x11, 0x11, "read error - loss of streaming",
598 0x11, 0x12, "auxiliary memory read error",
599 0x11, 0x13, "read error - failed retransmission request",
600 0x12, 0x00, "address mark not found for ID field",
601 0x13, 0x00, "address mark not found for data field",
602 0x14, 0x00, "recorded entity not found",
603 0x14, 0x01, "record not found",
604 0x14, 0x02, "filemark or setmark not found",
605 0x14, 0x03, "end-of-data not found",
606 0x14, 0x04, "block sequence error",
607 0x14, 0x05, "record not found - recommend reassignment",
608 0x14, 0x06, "record not found - data auto-reallocated",
609 0x14, 0x07, "locate operation failure",
610 0x15, 0x00, "random positioning error",
611 0x15, 0x01, "mechanical positioning error",
612 0x15, 0x02, "positioning error detected by read of medium",
613 0x16, 0x00, "data sync mark error",
614 0x16, 0x01, "data sync error - data rewritten",
615 0x16, 0x02, "data sync error - recommend rewrite",
616 0x16, 0x03, "data sync error - data auto-reallocated",
617 0x16, 0x04, "data sync error - recommend reassignment",
618 0x17, 0x00, "recovered data with no error correction",
619 0x17, 0x01, "recovered data with retries",
620 0x17, 0x02, "recovered data with positive head offset",
621 0x17, 0x03, "recovered data with negative head offset",
622 0x17, 0x04, "recovered data with retries and/or CIRC applied",
623 0x17, 0x05, "recovered data using previous sector id",
624 0x17, 0x06, "recovered data without ECC - data auto-reallocated",
625 0x17, 0x07, "recovered data without ECC - recommend reassignment",
626 0x17, 0x08, "recovered data without ECC - recommend rewrite",
627 0x17, 0x09, "recovered data without ECC - data rewritten",
628 0x18, 0x00, "recovered data with error correction",
629 0x18, 0x01, "recovered data with error corr. & retries applied",
630 0x18, 0x02, "recovered data - data auto-reallocated",
631 0x18, 0x03, "recovered data with CIRC",
632 0x18, 0x04, "recovered data with L-EC",
633 0x18, 0x05, "recovered data - recommend reassignment",
634 0x18, 0x06, "recovered data - recommend rewrite",
635 0x18, 0x07, "recovered data with ECC - data rewritten",
636 0x18, 0x08, "recovered data with linking",
637 0x19, 0x00, "defect list error",
638 0x1a, 0x00, "parameter list length error",
639 0x1b, 0x00, "synchronous data xfer error",
640 0x1c, 0x00, "defect list not found",
641 0x1c, 0x01, "primary defect list not found",
642 0x1c, 0x02, "grown defect list not found",
643 0x1d, 0x00, "miscompare during verify",
644 0x1e, 0x00, "recovered ID with ECC",
645 0x1f, 0x00, "partial defect list transfer",
646 0x20, 0x00, "invalid command operation code",
647 0x20, 0x01, "access denied - initiator pending-enrolled",
648 0x20, 0x02, "access denied - no access rights",
649 0x20, 0x03, "access denied - invalid mgmt id key",
650 0x20, 0x04, "illegal command while in write capable state",
651 0x20, 0x06, "illegal command while in explicit address mode",
652 0x20, 0x07, "illegal command while in implicit address mode",
653 0x20, 0x08, "access denied - enrollment conflict",
654 0x20, 0x09, "access denied - invalid lu identifier",
655 0x20, 0x0a, "access denied - invalid proxy token",
656 0x20, 0x0b, "access denied - ACL LUN conflict",
657 0x21, 0x00, "logical block address out of range",
658 0x21, 0x01, "invalid element address",
659 0x21, 0x02, "invalid address for write",
660 0x22, 0x00, "illegal function",
661 0x24, 0x00, "invalid field in cdb",
662 0x24, 0x01, "cdb decryption error",
663 0x25, 0x00, "LUN not supported",
664 0x26, 0x00, "invalid field in param list",
665 0x26, 0x01, "parameter not supported",
666 0x26, 0x02, "parameter value invalid",
667 0x26, 0x03, "threshold parameters not supported",
668 0x26, 0x04, "invalid release of persistent reservation",
669 0x26, 0x05, "data decryption error",
670 0x26, 0x06, "too many target descriptors",
671 0x26, 0x07, "unsupported target descriptor type code",
672 0x26, 0x08, "too many segment descriptors",
673 0x26, 0x09, "unsupported segment descriptor type code",
674 0x26, 0x0a, "unexpected inexact segment",
675 0x26, 0x0b, "inline data length exceeded",
676 0x26, 0x0c, "invalid operation for copy source or destination",
677 0x26, 0x0d, "copy segment granularity violation",
678 0x27, 0x00, "write protected",
679 0x27, 0x01, "hardware write protected",
680 0x27, 0x02, "LUN software write protected",
681 0x27, 0x03, "associated write protect",
682 0x27, 0x04, "persistent write protect",
683 0x27, 0x05, "permanent write protect",
684 0x27, 0x06, "conditional write protect",
685 0x27, 0x80, "unable to overwrite data",
686 0x28, 0x00, "medium may have changed",
687 0x28, 0x01, "import or export element accessed",
688 0x29, 0x00, "power on, reset, or bus reset occurred",
689 0x29, 0x01, "power on occurred",
690 0x29, 0x02, "scsi bus reset occurred",
691 0x29, 0x03, "bus device reset message occurred",
692 0x29, 0x04, "device internal reset",
693 0x29, 0x05, "transceiver mode changed to single-ended",
694 0x29, 0x06, "transceiver mode changed to LVD",
695 0x29, 0x07, "i_t nexus loss occurred",
696 0x2a, 0x00, "parameters changed",
697 0x2a, 0x01, "mode parameters changed",
698 0x2a, 0x02, "log parameters changed",
699 0x2a, 0x03, "reservations preempted",
700 0x2a, 0x04, "reservations released",
701 0x2a, 0x05, "registrations preempted",
702 0x2a, 0x06, "asymmetric access state changed",
703 0x2a, 0x07, "implicit asymmetric access state transition failed",
704 0x2b, 0x00, "copy cannot execute since host cannot disconnect",
705 0x2c, 0x00, "command sequence error",
706 0x2c, 0x03, "current program area is not empty",
707 0x2c, 0x04, "current program area is empty",
708 0x2c, 0x06, "persistent prevent conflict",
709 0x2c, 0x07, "previous busy status",
710 0x2c, 0x08, "previous task set full status",
711 0x2c, 0x09, "previous reservation conflict status",
712 0x2d, 0x00, "overwrite error on update in place",
713 0x2e, 0x00, "insufficient time for operation",
714 0x2f, 0x00, "commands cleared by another initiator",
715 0x30, 0x00, "incompatible medium installed",
716 0x30, 0x01, "cannot read medium - unknown format",
717 0x30, 0x02, "cannot read medium - incompatible format",
718 0x30, 0x03, "cleaning cartridge installed",
719 0x30, 0x04, "cannot write medium - unknown format",
720 0x30, 0x05, "cannot write medium - incompatible format",
721 0x30, 0x06, "cannot format medium - incompatible medium",
722 0x30, 0x07, "cleaning failure",
723 0x30, 0x08, "cannot write - application code mismatch",
724 0x30, 0x09, "current session not fixated for append",
725 0x30, 0x0b, "WORM medium - Overwrite attempted",
726 0x30, 0x0c, "WORM medium - Cannot Erase",
727 0x30, 0x0d, "WORM medium - Integrity Check",
728 0x30, 0x10, "medium not formatted",
729 0x31, 0x00, "medium format corrupted",
730 0x31, 0x01, "format command failed",
731 0x31, 0x02, "zoned formatting failed due to spare linking",
732 0x31, 0x94, "WORM media corrupted",
733 0x32, 0x00, "no defect spare location available",
734 0x32, 0x01, "defect list update failure",
735 0x33, 0x00, "tape length error",
736 0x34, 0x00, "enclosure failure",
737 0x35, 0x00, "enclosure services failure",
738 0x35, 0x01, "unsupported enclosure function",
739 0x35, 0x02, "enclosure services unavailable",
740 0x35, 0x03, "enclosure services transfer failure",
741 0x35, 0x04, "enclosure services transfer refused",
742 0x36, 0x00, "ribbon, ink, or toner failure",
743 0x37, 0x00, "rounded parameter",
744 0x39, 0x00, "saving parameters not supported",
745 0x3a, 0x00, "medium not present",
746 0x3a, 0x01, "medium not present - tray closed",
747 0x3a, 0x02, "medium not present - tray open",
748 0x3a, 0x03, "medium not present - loadable",
749 0x3a, 0x04, "medium not present - medium auxiliary memory accessible",
750 0x3b, 0x00, "sequential positioning error",
751 0x3b, 0x01, "tape position error at beginning-of-medium",
752 0x3b, 0x02, "tape position error at end-of-medium",
753 0x3b, 0x08, "reposition error",
754 0x3b, 0x0c, "position past beginning of medium",
755 0x3b, 0x0d, "medium destination element full",
756 0x3b, 0x0e, "medium source element empty",
757 0x3b, 0x0f, "end of medium reached",
758 0x3b, 0x11, "medium magazine not accessible",
759 0x3b, 0x12, "medium magazine removed",
760 0x3b, 0x13, "medium magazine inserted",
761 0x3b, 0x14, "medium magazine locked",
762 0x3b, 0x15, "medium magazine unlocked",
763 0x3b, 0x16, "mechanical positioning or changer error",
764 0x3d, 0x00, "invalid bits in indentify message",
765 0x3e, 0x00, "LUN has not self-configured yet",
766 0x3e, 0x01, "LUN failure",
767 0x3e, 0x02, "timeout on LUN",
768 0x3e, 0x03, "LUN failed self-test",
769 0x3e, 0x04, "LUN unable to update self-test log",
770 0x3f, 0x00, "target operating conditions have changed",
771 0x3f, 0x01, "microcode has been changed",
772 0x3f, 0x02, "changed operating definition",
773 0x3f, 0x03, "inquiry data has changed",
774 0x3f, 0x04, "component device attached",
775 0x3f, 0x05, "device identifier changed",
776 0x3f, 0x06, "redundancy group created or modified",
777 0x3f, 0x07, "redundancy group deleted",
778 0x3f, 0x08, "spare created or modified",
779 0x3f, 0x09, "spare deleted",
780 0x3f, 0x0a, "volume set created or modified",
781 0x3f, 0x0b, "volume set deleted",
782 0x3f, 0x0c, "volume set deassigned",
783 0x3f, 0x0d, "volume set reassigned",
784 0x3f, 0x0e, "reported LUNs data has changed",
785 0x3f, 0x0f, "echo buffer overwritten",
786 0x3f, 0x10, "medium loadable",
787 0x3f, 0x11, "medium auxiliary memory accessible",
788 0x40, 0x00, "ram failure",
789 0x41, 0x00, "data path failure",
790 0x42, 0x00, "power-on or self-test failure",
791 0x43, 0x00, "message error",
792 0x44, 0x00, "internal target failure",
793 0x45, 0x00, "select or reselect failure",
794 0x46, 0x00, "unsuccessful soft reset",
795 0x47, 0x00, "scsi parity error",
796 0x47, 0x01, "data phase crc error detected",
797 0x47, 0x02, "scsi parity error detected during st data phase",
798 0x47, 0x03, "information unit iucrc error detected",
799 0x47, 0x04, "asynchronous information protection error detected",
800 0x47, 0x05, "protocol service crc error",
801 0x47, 0x7f, "some commands cleared by iscsi protocol event",
802 0x48, 0x00, "initiator detected error message received",
803 0x49, 0x00, "invalid message error",
804 0x4a, 0x00, "command phase error",
805 0x4b, 0x00, "data phase error",
806 0x4b, 0x01, "invalid target port transfer tag received",
807 0x4b, 0x02, "too much write data",
808 0x4b, 0x03, "ack/nak timeout",
809 0x4b, 0x04, "nak received",
810 0x4b, 0x05, "data offset error",
811 0x4c, 0x00, "logical unit failed self-configuration",
812 0x4d, 0x00, "tagged overlapped commands (ASCQ = queue tag)",
813 0x4e, 0x00, "overlapped commands attempted",
814 0x50, 0x00, "write append error",
815 0x50, 0x01, "data protect write append error",
816 0x50, 0x95, "data protect write append error",
817 0x51, 0x00, "erase failure",
818 0x52, 0x00, "cartridge fault",
819 0x53, 0x00, "media load or eject failed",
820 0x53, 0x01, "unload tape failure",
821 0x53, 0x02, "medium removal prevented",
822 0x54, 0x00, "scsi to host system interface failure",
823 0x55, 0x00, "system resource failure",
824 0x55, 0x01, "system buffer full",
825 0x55, 0x02, "insufficient reservation resources",
826 0x55, 0x03, "insufficient resources",
827 0x55, 0x04, "insufficient registration resources",
828 0x55, 0x05, "insufficient access control resources",
829 0x55, 0x06, "auxiliary memory out of space",
830 0x57, 0x00, "unable to recover TOC",
831 0x58, 0x00, "generation does not exist",
832 0x59, 0x00, "updated block read",
833 0x5a, 0x00, "operator request or state change input",
834 0x5a, 0x01, "operator medium removal request",
835 0x5a, 0x02, "operator selected write protect",
836 0x5a, 0x03, "operator selected write permit",
837 0x5b, 0x00, "log exception",
838 0x5b, 0x01, "threshold condition met",
839 0x5b, 0x02, "log counter at maximum",
840 0x5b, 0x03, "log list codes exhausted",
841 0x5c, 0x00, "RPL status change",
842 0x5c, 0x01, "spindles synchronized",
843 0x5c, 0x02, "spindles not synchronized",
844 0x5d, 0x00, "drive operation marginal, service immediately"
845 " (failure prediction threshold exceeded)",
846 0x5d, 0x01, "media failure prediction threshold exceeded",
847 0x5d, 0x02, "LUN failure prediction threshold exceeded",
848 0x5d, 0x03, "spare area exhaustion prediction threshold exceeded",
849 0x5d, 0x10, "hardware impending failure general hard drive failure",
850 0x5d, 0x11, "hardware impending failure drive error rate too high",
851 0x5d, 0x12, "hardware impending failure data error rate too high",
852 0x5d, 0x13, "hardware impending failure seek error rate too high",
853 0x5d, 0x14, "hardware impending failure too many block reassigns",
854 0x5d, 0x15, "hardware impending failure access times too high",
855 0x5d, 0x16, "hardware impending failure start unit times too high",
856 0x5d, 0x17, "hardware impending failure channel parametrics",
857 0x5d, 0x18, "hardware impending failure controller detected",
858 0x5d, 0x19, "hardware impending failure throughput performance",
859 0x5d, 0x1a, "hardware impending failure seek time performance",
860 0x5d, 0x1b, "hardware impending failure spin-up retry count",
861 0x5d, 0x1c, "hardware impending failure drive calibration retry count",
862 0x5d, 0x20, "controller impending failure general hard drive failure",
863 0x5d, 0x21, "controller impending failure drive error rate too high",
864 0x5d, 0x22, "controller impending failure data error rate too high",
865 0x5d, 0x23, "controller impending failure seek error rate too high",
866 0x5d, 0x24, "controller impending failure too many block reassigns",
867 0x5d, 0x25, "controller impending failure access times too high",
868 0x5d, 0x26, "controller impending failure start unit times too high",
869 0x5d, 0x27, "controller impending failure channel parametrics",
870 0x5d, 0x28, "controller impending failure controller detected",
871 0x5d, 0x29, "controller impending failure throughput performance",
872 0x5d, 0x2a, "controller impending failure seek time performance",
873 0x5d, 0x2b, "controller impending failure spin-up retry count",
874 0x5d, 0x2c, "controller impending failure drive calibration retry cnt",
875 0x5d, 0x30, "data channel impending failure general hard drive failure",
876 0x5d, 0x31, "data channel impending failure drive error rate too high",
877 0x5d, 0x32, "data channel impending failure data error rate too high",
878 0x5d, 0x33, "data channel impending failure seek error rate too high",
879 0x5d, 0x34, "data channel impending failure too many block reassigns",
880 0x5d, 0x35, "data channel impending failure access times too high",
881 0x5d, 0x36, "data channel impending failure start unit times too high",
882 0x5d, 0x37, "data channel impending failure channel parametrics",
883 0x5d, 0x38, "data channel impending failure controller detected",
884 0x5d, 0x39, "data channel impending failure throughput performance",
885 0x5d, 0x3a, "data channel impending failure seek time performance",
886 0x5d, 0x3b, "data channel impending failure spin-up retry count",
887 0x5d, 0x3c, "data channel impending failure drive calibrate retry cnt",
888 0x5d, 0x40, "servo impending failure general hard drive failure",
889 0x5d, 0x41, "servo impending failure drive error rate too high",
890 0x5d, 0x42, "servo impending failure data error rate too high",
891 0x5d, 0x43, "servo impending failure seek error rate too high",
892 0x5d, 0x44, "servo impending failure too many block reassigns",
893 0x5d, 0x45, "servo impending failure access times too high",
894 0x5d, 0x46, "servo impending failure start unit times too high",
895 0x5d, 0x47, "servo impending failure channel parametrics",
896 0x5d, 0x48, "servo impending failure controller detected",
897 0x5d, 0x49, "servo impending failure throughput performance",
898 0x5d, 0x4a, "servo impending failure seek time performance",
899 0x5d, 0x4b, "servo impending failure spin-up retry count",
900 0x5d, 0x4c, "servo impending failure drive calibration retry count",
901 0x5d, 0x50, "spindle impending failure general hard drive failure",
902 0x5d, 0x51, "spindle impending failure drive error rate too high",
903 0x5d, 0x52, "spindle impending failure data error rate too high",
904 0x5d, 0x53, "spindle impending failure seek error rate too high",
905 0x5d, 0x54, "spindle impending failure too many block reassigns",
906 0x5d, 0x55, "spindle impending failure access times too high",
907 0x5d, 0x56, "spindle impending failure start unit times too high",
908 0x5d, 0x57, "spindle impending failure channel parametrics",
909 0x5d, 0x58, "spindle impending failure controller detected",
910 0x5d, 0x59, "spindle impending failure throughput performance",
911 0x5d, 0x5a, "spindle impending failure seek time performance",
912 0x5d, 0x5b, "spindle impending failure spin-up retry count",
913 0x5d, 0x5c, "spindle impending failure drive calibration retry count",
914 0x5d, 0x60, "firmware impending failure general hard drive failure",
915 0x5d, 0x61, "firmware impending failure drive error rate too high",
916 0x5d, 0x62, "firmware impending failure data error rate too high",
917 0x5d, 0x63, "firmware impending failure seek error rate too high",
918 0x5d, 0x64, "firmware impending failure too many block reassigns",
919 0x5d, 0x65, "firmware impending failure access times too high",
920 0x5d, 0x66, "firmware impending failure start unit times too high",
921 0x5d, 0x67, "firmware impending failure channel parametrics",
922 0x5d, 0x68, "firmware impending failure controller detected",
923 0x5d, 0x69, "firmware impending failure throughput performance",
924 0x5d, 0x6a, "firmware impending failure seek time performance",
925 0x5d, 0x6b, "firmware impending failure spin-up retry count",
926 0x5d, 0x6c, "firmware impending failure drive calibration retry count",
927 0x5d, 0xff, "failure prediction threshold exceeded (false)",
928 0x5e, 0x00, "low power condition active",
929 0x5e, 0x01, "idle condition activated by timer",
930 0x5e, 0x02, "standby condition activated by timer",
931 0x5e, 0x03, "idle condition activated by command",
932 0x5e, 0x04, "standby condition activated by command",
933 0x60, 0x00, "lamp failure",
934 0x61, 0x00, "video acquisition error",
935 0x62, 0x00, "scan head positioning error",
936 0x63, 0x00, "end of user area encountered on this track",
937 0x63, 0x01, "packet does not fit in available space",
938 0x64, 0x00, "illegal mode for this track",
939 0x64, 0x01, "invalid packet size",
940 0x65, 0x00, "voltage fault",
941 0x66, 0x00, "automatic document feeder cover up",
942 0x67, 0x00, "configuration failure",
943 0x67, 0x01, "configuration of incapable LUNs failed",
944 0x67, 0x02, "add LUN failed",
945 0x67, 0x03, "modification of LUN failed",
946 0x67, 0x04, "exchange of LUN failed",
947 0x67, 0x05, "remove of LUN failed",
948 0x67, 0x06, "attachment of LUN failed",
949 0x67, 0x07, "creation of LUN failed",
950 0x67, 0x08, "assign failure occurred",
951 0x67, 0x09, "multiply assigned LUN",
952 0x67, 0x0a, "set target port groups command failed",
953 0x68, 0x00, "logical unit not configured",
954 0x69, 0x00, "data loss on logical unit",
955 0x69, 0x01, "multiple LUN failures",
956 0x69, 0x02, "parity/data mismatch",
957 0x6a, 0x00, "informational, refer to log",
958 0x6b, 0x00, "state change has occurred",
959 0x6b, 0x01, "redundancy level got better",
960 0x6b, 0x02, "redundancy level got worse",
961 0x6c, 0x00, "rebuild failure occurred",
962 0x6d, 0x00, "recalculate failure occurred",
963 0x6e, 0x00, "command to logical unit failed",
964 0x6f, 0x00, "copy protect key exchange failure authentication failure",
965 0x6f, 0x01, "copy protect key exchange failure key not present",
966 0x6f, 0x02, "copy protect key exchange failure key not established",
967 0x6f, 0x03, "read of scrambled sector without authentication",
968 0x6f, 0x04, "media region code is mismatched to LUN region",
969 0x6f, 0x05, "drive region must be permanent/region reset count error",
970 0x70, 0xffff, "decompression exception short algorithm id of ASCQ",
971 0x71, 0x00, "decompression exception long algorithm id",
972 0x72, 0x00, "session fixation error",
973 0x72, 0x01, "session fixation error writing lead-in",
974 0x72, 0x02, "session fixation error writing lead-out",
975 0x72, 0x03, "session fixation error - incomplete track in session",
976 0x72, 0x04, "empty or partially written reserved track",
977 0x72, 0x05, "no more track reservations allowed",
978 0x73, 0x00, "cd control error",
979 0x73, 0x01, "power calibration area almost full",
980 0x73, 0x02, "power calibration area is full",
981 0x73, 0x03, "power calibration area error",
982 0x73, 0x04, "program memory area update failure",
983 0x73, 0x05, "program memory area is full",
984 0x73, 0x06, "rma/pma is almost full",
985 0xffff, 0xffff, NULL
986 };
987
988 char *
989 scsi_esname(uint_t key, char *tmpstr)
990 {
991 int i = 0;
992
993 while (extended_sense_list[i].asc != 0xffff) {
994 if (key == extended_sense_list[i].asc) {
995 return ((char *)extended_sense_list[i].message);
996 }
997 i++;
998 }
999 return (sprintf(tmpstr, "<vendor unique code 0x%x>", key));
1000 }
1001
1002 char *
1003 scsi_asc_name(uint_t asc, uint_t ascq, char *tmpstr)
1004 {
1005 int i = 0;
|
480 cmdvec++;
481 }
482 return (sprintf(scsi_tmpname, "<undecoded cmd 0x%x>", cmd));
483 }
484
485 char *
486 scsi_cmd_name(uchar_t cmd, struct scsi_key_strings *cmdlist, char *tmpstr)
487 {
488 int i = 0;
489
490 while (cmdlist[i].key != -1) {
491 if (cmd == cmdlist[i].key) {
492 return ((char *)cmdlist[i].message);
493 }
494 i++;
495 }
496 return (sprintf(tmpstr, "<undecoded cmd 0x%x>", cmd));
497 }
498
499 static struct scsi_asq_key_strings extended_sense_list[] = {
500 { 0x00, 0x00, "no additional sense info" },
501 { 0x00, 0x01, "filemark detected" },
502 { 0x00, 0x02, "end of partition/medium detected" },
503 { 0x00, 0x03, "setmark detected" },
504 { 0x00, 0x04, "beginning of partition/medium detected" },
505 { 0x00, 0x05, "end of data detected" },
506 { 0x00, 0x06, "i/o process terminated" },
507 { 0x00, 0x11, "audio play operation in progress" },
508 { 0x00, 0x12, "audio play operation paused" },
509 { 0x00, 0x13, "audio play operation successfully completed" },
510 { 0x00, 0x14, "audio play operation stopped due to error" },
511 { 0x00, 0x15, "no current audio status to return" },
512 { 0x00, 0x16, "operation in progress" },
513 { 0x00, 0x17, "cleaning requested" },
514 { 0x00, 0x18, "erase operation in progress" },
515 { 0x00, 0x19, "locate operation in progress" },
516 { 0x00, 0x1A, "rewind operation in progress" },
517 { 0x00, 0x1B, "set capacity operation in progress" },
518 { 0x00, 0x1C, "verify operation in progress" },
519 { 0x00, 0x1D, "ATA passthrough information available" },
520 { 0x01, 0x00, "no index/sector signal" },
521 { 0x02, 0x00, "no seek complete" },
522 { 0x03, 0x00, "peripheral device write fault" },
523 { 0x03, 0x01, "no write current" },
524 { 0x03, 0x02, "excessive write errors" },
525 { 0x04, 0x00, "LUN not ready" },
526 { 0x04, 0x01, "LUN is becoming ready" },
527 { 0x04, 0x02, "LUN initializing command required" },
528 { 0x04, 0x03, "LUN not ready intervention required" },
529 { 0x04, 0x04, "LUN not ready format in progress" },
530 { 0x04, 0x05, "LUN not ready, rebuild in progress" },
531 { 0x04, 0x06, "LUN not ready, recalculation in progress" },
532 { 0x04, 0x07, "LUN not ready, operation in progress" },
533 { 0x04, 0x08, "LUN not ready, long write in progress" },
534 { 0x04, 0x09, "LUN not ready, self-test in progress" },
535 { 0x04, 0x0A, "LUN not accessible, asymmetric access state transition" },
536 { 0x04, 0x0B, "LUN not accessible, target port in standby state" },
537 { 0x04, 0x0C, "LUN not accessible, target port in unavailable state" },
538 { 0x04, 0x10, "LUN not ready, auxiliary memory not accessible" },
539 { 0x05, 0x00, "LUN does not respond to selection" },
540 { 0x06, 0x00, "reference position found" },
541 { 0x07, 0x00, "multiple peripheral devices selected" },
542 { 0x08, 0x00, "LUN communication failure" },
543 { 0x08, 0x01, "LUN communication time-out" },
544 { 0x08, 0x02, "LUN communication parity error" },
545 { 0x08, 0x03, "LUN communication crc error (ultra-DMA/32)" },
546 { 0x08, 0x04, "unreachable copy target" },
547 { 0x09, 0x00, "track following error" },
548 { 0x09, 0x01, "tracking servo failure" },
549 { 0x09, 0x02, "focus servo failure" },
550 { 0x09, 0x03, "spindle servo failure" },
551 { 0x09, 0x04, "head select fault" },
552 { 0x0a, 0x00, "error log overflow" },
553 { 0x0b, 0x00, "warning" },
554 { 0x0b, 0x01, "warning - specified temperature exceeded" },
555 { 0x0b, 0x02, "warning - enclosure degraded" },
556 { 0x0c, 0x00, "write error" },
557 { 0x0c, 0x01, "write error - recovered with auto reallocation" },
558 { 0x0c, 0x02, "write error - auto reallocation failed" },
559 { 0x0c, 0x03, "write error - recommend reassignment" },
560 { 0x0c, 0x04, "compression check miscompare error" },
561 { 0x0c, 0x05, "data expansion occurred during compression" },
562 { 0x0c, 0x06, "block not compressible" },
563 { 0x0c, 0x07, "write error - recovery needed" },
564 { 0x0c, 0x08, "write error - recovery failed" },
565 { 0x0c, 0x09, "write error - loss of streaming" },
566 { 0x0c, 0x0a, "write error - padding blocks added" },
567 { 0x0c, 0x0b, "auxiliary memory write error" },
568 { 0x0c, 0x0c, "write error - unexpected unsolicited data" },
569 { 0x0c, 0x0d, "write error - not enough unsolicited data" },
570 { 0x0d, 0x00, "error detected by third party temporary initiator" },
571 { 0x0d, 0x01, "third party device failure" },
572 { 0x0d, 0x02, "copy target device not reachable" },
573 { 0x0d, 0x03, "incorrect copy target device type" },
574 { 0x0d, 0x04, "copy target device data underrun" },
575 { 0x0d, 0x05, "copy target device data overrun" },
576 { 0x0e, 0x00, "invalid information unit" },
577 { 0x0e, 0x01, "information unit too short" },
578 { 0x0e, 0x02, "information unit too long" },
579 { 0x10, 0x00, "ID CRC or ECC error" },
580 { 0x11, 0x00, "unrecovered read error" },
581 { 0x11, 0x01, "read retries exhausted" },
582 { 0x11, 0x02, "error too long to correct" },
583 { 0x11, 0x03, "multiple read errors" },
584 { 0x11, 0x04, "unrecovered read error - auto reallocate failed" },
585 { 0x11, 0x05, "L-EC uncorrectable error" },
586 { 0x11, 0x06, "CIRC unrecovered error" },
587 { 0x11, 0x07, "data re-synchronization error" },
588 { 0x11, 0x08, "incomplete block read" },
589 { 0x11, 0x09, "no gap found" },
590 { 0x11, 0x0a, "miscorrected error" },
591 { 0x11, 0x0b, "unrecovered read error - recommend reassignment" },
592 { 0x11, 0x0c, "unrecovered read error - recommend rewrite the data" },
593 { 0x11, 0x0d, "de-compression crc error" },
594 { 0x11, 0x0e, "cannot decompress using declared algorithm" },
595 { 0x11, 0x0f, "error reading UPC/EAN number" },
596 { 0x11, 0x10, "error reading ISRC number" },
597 { 0x11, 0x11, "read error - loss of streaming" },
598 { 0x11, 0x12, "auxiliary memory read error" },
599 { 0x11, 0x13, "read error - failed retransmission request" },
600 { 0x12, 0x00, "address mark not found for ID field" },
601 { 0x13, 0x00, "address mark not found for data field" },
602 { 0x14, 0x00, "recorded entity not found" },
603 { 0x14, 0x01, "record not found" },
604 { 0x14, 0x02, "filemark or setmark not found" },
605 { 0x14, 0x03, "end-of-data not found" },
606 { 0x14, 0x04, "block sequence error" },
607 { 0x14, 0x05, "record not found - recommend reassignment" },
608 { 0x14, 0x06, "record not found - data auto-reallocated" },
609 { 0x14, 0x07, "locate operation failure" },
610 { 0x15, 0x00, "random positioning error" },
611 { 0x15, 0x01, "mechanical positioning error" },
612 { 0x15, 0x02, "positioning error detected by read of medium" },
613 { 0x16, 0x00, "data sync mark error" },
614 { 0x16, 0x01, "data sync error - data rewritten" },
615 { 0x16, 0x02, "data sync error - recommend rewrite" },
616 { 0x16, 0x03, "data sync error - data auto-reallocated" },
617 { 0x16, 0x04, "data sync error - recommend reassignment" },
618 { 0x17, 0x00, "recovered data with no error correction" },
619 { 0x17, 0x01, "recovered data with retries" },
620 { 0x17, 0x02, "recovered data with positive head offset" },
621 { 0x17, 0x03, "recovered data with negative head offset" },
622 { 0x17, 0x04, "recovered data with retries and/or CIRC applied" },
623 { 0x17, 0x05, "recovered data using previous sector id" },
624 { 0x17, 0x06, "recovered data without ECC - data auto-reallocated" },
625 { 0x17, 0x07, "recovered data without ECC - recommend reassignment" },
626 { 0x17, 0x08, "recovered data without ECC - recommend rewrite" },
627 { 0x17, 0x09, "recovered data without ECC - data rewritten" },
628 { 0x18, 0x00, "recovered data with error correction" },
629 { 0x18, 0x01, "recovered data with error corr. & retries applied" },
630 { 0x18, 0x02, "recovered data - data auto-reallocated" },
631 { 0x18, 0x03, "recovered data with CIRC" },
632 { 0x18, 0x04, "recovered data with L-EC" },
633 { 0x18, 0x05, "recovered data - recommend reassignment" },
634 { 0x18, 0x06, "recovered data - recommend rewrite" },
635 { 0x18, 0x07, "recovered data with ECC - data rewritten" },
636 { 0x18, 0x08, "recovered data with linking" },
637 { 0x19, 0x00, "defect list error" },
638 { 0x1a, 0x00, "parameter list length error" },
639 { 0x1b, 0x00, "synchronous data xfer error" },
640 { 0x1c, 0x00, "defect list not found" },
641 { 0x1c, 0x01, "primary defect list not found" },
642 { 0x1c, 0x02, "grown defect list not found" },
643 { 0x1d, 0x00, "miscompare during verify" },
644 { 0x1e, 0x00, "recovered ID with ECC" },
645 { 0x1f, 0x00, "partial defect list transfer" },
646 { 0x20, 0x00, "invalid command operation code" },
647 { 0x20, 0x01, "access denied - initiator pending-enrolled" },
648 { 0x20, 0x02, "access denied - no access rights" },
649 { 0x20, 0x03, "access denied - invalid mgmt id key" },
650 { 0x20, 0x04, "illegal command while in write capable state" },
651 { 0x20, 0x06, "illegal command while in explicit address mode" },
652 { 0x20, 0x07, "illegal command while in implicit address mode" },
653 { 0x20, 0x08, "access denied - enrollment conflict" },
654 { 0x20, 0x09, "access denied - invalid lu identifier" },
655 { 0x20, 0x0a, "access denied - invalid proxy token" },
656 { 0x20, 0x0b, "access denied - ACL LUN conflict" },
657 { 0x21, 0x00, "logical block address out of range" },
658 { 0x21, 0x01, "invalid element address" },
659 { 0x21, 0x02, "invalid address for write" },
660 { 0x22, 0x00, "illegal function" },
661 { 0x24, 0x00, "invalid field in cdb" },
662 { 0x24, 0x01, "cdb decryption error" },
663 { 0x25, 0x00, "LUN not supported" },
664 { 0x26, 0x00, "invalid field in param list" },
665 { 0x26, 0x01, "parameter not supported" },
666 { 0x26, 0x02, "parameter value invalid" },
667 { 0x26, 0x03, "threshold parameters not supported" },
668 { 0x26, 0x04, "invalid release of persistent reservation" },
669 { 0x26, 0x05, "data decryption error" },
670 { 0x26, 0x06, "too many target descriptors" },
671 { 0x26, 0x07, "unsupported target descriptor type code" },
672 { 0x26, 0x08, "too many segment descriptors" },
673 { 0x26, 0x09, "unsupported segment descriptor type code" },
674 { 0x26, 0x0a, "unexpected inexact segment" },
675 { 0x26, 0x0b, "inline data length exceeded" },
676 { 0x26, 0x0c, "invalid operation for copy source or destination" },
677 { 0x26, 0x0d, "copy segment granularity violation" },
678 { 0x27, 0x00, "write protected" },
679 { 0x27, 0x01, "hardware write protected" },
680 { 0x27, 0x02, "LUN software write protected" },
681 { 0x27, 0x03, "associated write protect" },
682 { 0x27, 0x04, "persistent write protect" },
683 { 0x27, 0x05, "permanent write protect" },
684 { 0x27, 0x06, "conditional write protect" },
685 { 0x27, 0x80, "unable to overwrite data" },
686 { 0x28, 0x00, "medium may have changed" },
687 { 0x28, 0x01, "import or export element accessed" },
688 { 0x29, 0x00, "power on, reset, or bus reset occurred" },
689 { 0x29, 0x01, "power on occurred" },
690 { 0x29, 0x02, "scsi bus reset occurred" },
691 { 0x29, 0x03, "bus device reset message occurred" },
692 { 0x29, 0x04, "device internal reset" },
693 { 0x29, 0x05, "transceiver mode changed to single-ended" },
694 { 0x29, 0x06, "transceiver mode changed to LVD" },
695 { 0x29, 0x07, "i_t nexus loss occurred" },
696 { 0x2a, 0x00, "parameters changed" },
697 { 0x2a, 0x01, "mode parameters changed" },
698 { 0x2a, 0x02, "log parameters changed" },
699 { 0x2a, 0x03, "reservations preempted" },
700 { 0x2a, 0x04, "reservations released" },
701 { 0x2a, 0x05, "registrations preempted" },
702 { 0x2a, 0x06, "asymmetric access state changed" },
703 { 0x2a, 0x07, "implicit asymmetric access state transition failed" },
704 { 0x2b, 0x00, "copy cannot execute since host cannot disconnect" },
705 { 0x2c, 0x00, "command sequence error" },
706 { 0x2c, 0x03, "current program area is not empty" },
707 { 0x2c, 0x04, "current program area is empty" },
708 { 0x2c, 0x06, "persistent prevent conflict" },
709 { 0x2c, 0x07, "previous busy status" },
710 { 0x2c, 0x08, "previous task set full status" },
711 { 0x2c, 0x09, "previous reservation conflict status" },
712 { 0x2d, 0x00, "overwrite error on update in place" },
713 { 0x2e, 0x00, "insufficient time for operation" },
714 { 0x2f, 0x00, "commands cleared by another initiator" },
715 { 0x30, 0x00, "incompatible medium installed" },
716 { 0x30, 0x01, "cannot read medium - unknown format" },
717 { 0x30, 0x02, "cannot read medium - incompatible format" },
718 { 0x30, 0x03, "cleaning cartridge installed" },
719 { 0x30, 0x04, "cannot write medium - unknown format" },
720 { 0x30, 0x05, "cannot write medium - incompatible format" },
721 { 0x30, 0x06, "cannot format medium - incompatible medium" },
722 { 0x30, 0x07, "cleaning failure" },
723 { 0x30, 0x08, "cannot write - application code mismatch" },
724 { 0x30, 0x09, "current session not fixated for append" },
725 { 0x30, 0x0b, "WORM medium - Overwrite attempted" },
726 { 0x30, 0x0c, "WORM medium - Cannot Erase" },
727 { 0x30, 0x0d, "WORM medium - Integrity Check" },
728 { 0x30, 0x10, "medium not formatted" },
729 { 0x31, 0x00, "medium format corrupted" },
730 { 0x31, 0x01, "format command failed" },
731 { 0x31, 0x02, "zoned formatting failed due to spare linking" },
732 { 0x31, 0x94, "WORM media corrupted" },
733 { 0x32, 0x00, "no defect spare location available" },
734 { 0x32, 0x01, "defect list update failure" },
735 { 0x33, 0x00, "tape length error" },
736 { 0x34, 0x00, "enclosure failure" },
737 { 0x35, 0x00, "enclosure services failure" },
738 { 0x35, 0x01, "unsupported enclosure function" },
739 { 0x35, 0x02, "enclosure services unavailable" },
740 { 0x35, 0x03, "enclosure services transfer failure" },
741 { 0x35, 0x04, "enclosure services transfer refused" },
742 { 0x36, 0x00, "ribbon, ink, or toner failure" },
743 { 0x37, 0x00, "rounded parameter" },
744 { 0x39, 0x00, "saving parameters not supported" },
745 { 0x3a, 0x00, "medium not present" },
746 { 0x3a, 0x01, "medium not present - tray closed" },
747 { 0x3a, 0x02, "medium not present - tray open" },
748 { 0x3a, 0x03, "medium not present - loadable" },
749 { 0x3a, 0x04, "medium not present - medium auxiliary memory accessible" },
750 { 0x3b, 0x00, "sequential positioning error" },
751 { 0x3b, 0x01, "tape position error at beginning-of-medium" },
752 { 0x3b, 0x02, "tape position error at end-of-medium" },
753 { 0x3b, 0x08, "reposition error" },
754 { 0x3b, 0x0c, "position past beginning of medium" },
755 { 0x3b, 0x0d, "medium destination element full" },
756 { 0x3b, 0x0e, "medium source element empty" },
757 { 0x3b, 0x0f, "end of medium reached" },
758 { 0x3b, 0x11, "medium magazine not accessible" },
759 { 0x3b, 0x12, "medium magazine removed" },
760 { 0x3b, 0x13, "medium magazine inserted" },
761 { 0x3b, 0x14, "medium magazine locked" },
762 { 0x3b, 0x15, "medium magazine unlocked" },
763 { 0x3b, 0x16, "mechanical positioning or changer error" },
764 { 0x3d, 0x00, "invalid bits in indentify message" },
765 { 0x3e, 0x00, "LUN has not self-configured yet" },
766 { 0x3e, 0x01, "LUN failure" },
767 { 0x3e, 0x02, "timeout on LUN" },
768 { 0x3e, 0x03, "LUN failed self-test" },
769 { 0x3e, 0x04, "LUN unable to update self-test log" },
770 { 0x3f, 0x00, "target operating conditions have changed" },
771 { 0x3f, 0x01, "microcode has been changed" },
772 { 0x3f, 0x02, "changed operating definition" },
773 { 0x3f, 0x03, "inquiry data has changed" },
774 { 0x3f, 0x04, "component device attached" },
775 { 0x3f, 0x05, "device identifier changed" },
776 { 0x3f, 0x06, "redundancy group created or modified" },
777 { 0x3f, 0x07, "redundancy group deleted" },
778 { 0x3f, 0x08, "spare created or modified" },
779 { 0x3f, 0x09, "spare deleted" },
780 { 0x3f, 0x0a, "volume set created or modified" },
781 { 0x3f, 0x0b, "volume set deleted" },
782 { 0x3f, 0x0c, "volume set deassigned" },
783 { 0x3f, 0x0d, "volume set reassigned" },
784 { 0x3f, 0x0e, "reported LUNs data has changed" },
785 { 0x3f, 0x0f, "echo buffer overwritten" },
786 { 0x3f, 0x10, "medium loadable" },
787 { 0x3f, 0x11, "medium auxiliary memory accessible" },
788 { 0x40, 0x00, "ram failure" },
789 { 0x41, 0x00, "data path failure" },
790 { 0x42, 0x00, "power-on or self-test failure" },
791 { 0x43, 0x00, "message error" },
792 { 0x44, 0x00, "internal target failure" },
793 { 0x45, 0x00, "select or reselect failure" },
794 { 0x46, 0x00, "unsuccessful soft reset" },
795 { 0x47, 0x00, "scsi parity error" },
796 { 0x47, 0x01, "data phase crc error detected" },
797 { 0x47, 0x02, "scsi parity error detected during st data phase" },
798 { 0x47, 0x03, "information unit iucrc error detected" },
799 { 0x47, 0x04, "asynchronous information protection error detected" },
800 { 0x47, 0x05, "protocol service crc error" },
801 { 0x47, 0x7f, "some commands cleared by iscsi protocol event" },
802 { 0x48, 0x00, "initiator detected error message received" },
803 { 0x49, 0x00, "invalid message error" },
804 { 0x4a, 0x00, "command phase error" },
805 { 0x4b, 0x00, "data phase error" },
806 { 0x4b, 0x01, "invalid target port transfer tag received" },
807 { 0x4b, 0x02, "too much write data" },
808 { 0x4b, 0x03, "ack/nak timeout" },
809 { 0x4b, 0x04, "nak received" },
810 { 0x4b, 0x05, "data offset error" },
811 { 0x4c, 0x00, "logical unit failed self-configuration" },
812 { 0x4d, 0x00, "tagged overlapped commands (ASCQ = queue tag)" },
813 { 0x4e, 0x00, "overlapped commands attempted" },
814 { 0x50, 0x00, "write append error" },
815 { 0x50, 0x01, "data protect write append error" },
816 { 0x50, 0x95, "data protect write append error" },
817 { 0x51, 0x00, "erase failure" },
818 { 0x52, 0x00, "cartridge fault" },
819 { 0x53, 0x00, "media load or eject failed" },
820 { 0x53, 0x01, "unload tape failure" },
821 { 0x53, 0x02, "medium removal prevented" },
822 { 0x54, 0x00, "scsi to host system interface failure" },
823 { 0x55, 0x00, "system resource failure" },
824 { 0x55, 0x01, "system buffer full" },
825 { 0x55, 0x02, "insufficient reservation resources" },
826 { 0x55, 0x03, "insufficient resources" },
827 { 0x55, 0x04, "insufficient registration resources" },
828 { 0x55, 0x05, "insufficient access control resources" },
829 { 0x55, 0x06, "auxiliary memory out of space" },
830 { 0x57, 0x00, "unable to recover TOC" },
831 { 0x58, 0x00, "generation does not exist" },
832 { 0x59, 0x00, "updated block read" },
833 { 0x5a, 0x00, "operator request or state change input" },
834 { 0x5a, 0x01, "operator medium removal request" },
835 { 0x5a, 0x02, "operator selected write protect" },
836 { 0x5a, 0x03, "operator selected write permit" },
837 { 0x5b, 0x00, "log exception" },
838 { 0x5b, 0x01, "threshold condition met" },
839 { 0x5b, 0x02, "log counter at maximum" },
840 { 0x5b, 0x03, "log list codes exhausted" },
841 { 0x5c, 0x00, "RPL status change" },
842 { 0x5c, 0x01, "spindles synchronized" },
843 { 0x5c, 0x02, "spindles not synchronized" },
844 { 0x5d, 0x00, "drive operation marginal, service immediately"
845 " (failure prediction threshold exceeded)" },
846 { 0x5d, 0x01, "media failure prediction threshold exceeded" },
847 { 0x5d, 0x02, "LUN failure prediction threshold exceeded" },
848 { 0x5d, 0x03, "spare area exhaustion prediction threshold exceeded" },
849 { 0x5d, 0x10, "hardware impending failure general hard drive failure" },
850 { 0x5d, 0x11, "hardware impending failure drive error rate too high" },
851 { 0x5d, 0x12, "hardware impending failure data error rate too high" },
852 { 0x5d, 0x13, "hardware impending failure seek error rate too high" },
853 { 0x5d, 0x14, "hardware impending failure too many block reassigns" },
854 { 0x5d, 0x15, "hardware impending failure access times too high" },
855 { 0x5d, 0x16, "hardware impending failure start unit times too high" },
856 { 0x5d, 0x17, "hardware impending failure channel parametrics" },
857 { 0x5d, 0x18, "hardware impending failure controller detected" },
858 { 0x5d, 0x19, "hardware impending failure throughput performance" },
859 { 0x5d, 0x1a, "hardware impending failure seek time performance" },
860 { 0x5d, 0x1b, "hardware impending failure spin-up retry count" },
861 { 0x5d, 0x1c, "hardware impending failure drive calibration retry count" },
862 { 0x5d, 0x20, "controller impending failure general hard drive failure" },
863 { 0x5d, 0x21, "controller impending failure drive error rate too high" },
864 { 0x5d, 0x22, "controller impending failure data error rate too high" },
865 { 0x5d, 0x23, "controller impending failure seek error rate too high" },
866 { 0x5d, 0x24, "controller impending failure too many block reassigns" },
867 { 0x5d, 0x25, "controller impending failure access times too high" },
868 { 0x5d, 0x26, "controller impending failure start unit times too high" },
869 { 0x5d, 0x27, "controller impending failure channel parametrics" },
870 { 0x5d, 0x28, "controller impending failure controller detected" },
871 { 0x5d, 0x29, "controller impending failure throughput performance" },
872 { 0x5d, 0x2a, "controller impending failure seek time performance" },
873 { 0x5d, 0x2b, "controller impending failure spin-up retry count" },
874 { 0x5d, 0x2c, "controller impending failure drive calibration retry cnt" },
875 { 0x5d, 0x30, "data channel impending failure general hard drive failure" },
876 { 0x5d, 0x31, "data channel impending failure drive error rate too high" },
877 { 0x5d, 0x32, "data channel impending failure data error rate too high" },
878 { 0x5d, 0x33, "data channel impending failure seek error rate too high" },
879 { 0x5d, 0x34, "data channel impending failure too many block reassigns" },
880 { 0x5d, 0x35, "data channel impending failure access times too high" },
881 { 0x5d, 0x36, "data channel impending failure start unit times too high" },
882 { 0x5d, 0x37, "data channel impending failure channel parametrics" },
883 { 0x5d, 0x38, "data channel impending failure controller detected" },
884 { 0x5d, 0x39, "data channel impending failure throughput performance" },
885 { 0x5d, 0x3a, "data channel impending failure seek time performance" },
886 { 0x5d, 0x3b, "data channel impending failure spin-up retry count" },
887 { 0x5d, 0x3c, "data channel impending failure drive calibrate retry cnt" },
888 { 0x5d, 0x40, "servo impending failure general hard drive failure" },
889 { 0x5d, 0x41, "servo impending failure drive error rate too high" },
890 { 0x5d, 0x42, "servo impending failure data error rate too high" },
891 { 0x5d, 0x43, "servo impending failure seek error rate too high" },
892 { 0x5d, 0x44, "servo impending failure too many block reassigns" },
893 { 0x5d, 0x45, "servo impending failure access times too high" },
894 { 0x5d, 0x46, "servo impending failure start unit times too high" },
895 { 0x5d, 0x47, "servo impending failure channel parametrics" },
896 { 0x5d, 0x48, "servo impending failure controller detected" },
897 { 0x5d, 0x49, "servo impending failure throughput performance" },
898 { 0x5d, 0x4a, "servo impending failure seek time performance" },
899 { 0x5d, 0x4b, "servo impending failure spin-up retry count" },
900 { 0x5d, 0x4c, "servo impending failure drive calibration retry count" },
901 { 0x5d, 0x50, "spindle impending failure general hard drive failure" },
902 { 0x5d, 0x51, "spindle impending failure drive error rate too high" },
903 { 0x5d, 0x52, "spindle impending failure data error rate too high" },
904 { 0x5d, 0x53, "spindle impending failure seek error rate too high" },
905 { 0x5d, 0x54, "spindle impending failure too many block reassigns" },
906 { 0x5d, 0x55, "spindle impending failure access times too high" },
907 { 0x5d, 0x56, "spindle impending failure start unit times too high" },
908 { 0x5d, 0x57, "spindle impending failure channel parametrics" },
909 { 0x5d, 0x58, "spindle impending failure controller detected" },
910 { 0x5d, 0x59, "spindle impending failure throughput performance" },
911 { 0x5d, 0x5a, "spindle impending failure seek time performance" },
912 { 0x5d, 0x5b, "spindle impending failure spin-up retry count" },
913 { 0x5d, 0x5c, "spindle impending failure drive calibration retry count" },
914 { 0x5d, 0x60, "firmware impending failure general hard drive failure" },
915 { 0x5d, 0x61, "firmware impending failure drive error rate too high" },
916 { 0x5d, 0x62, "firmware impending failure data error rate too high" },
917 { 0x5d, 0x63, "firmware impending failure seek error rate too high" },
918 { 0x5d, 0x64, "firmware impending failure too many block reassigns" },
919 { 0x5d, 0x65, "firmware impending failure access times too high" },
920 { 0x5d, 0x66, "firmware impending failure start unit times too high" },
921 { 0x5d, 0x67, "firmware impending failure channel parametrics" },
922 { 0x5d, 0x68, "firmware impending failure controller detected" },
923 { 0x5d, 0x69, "firmware impending failure throughput performance" },
924 { 0x5d, 0x6a, "firmware impending failure seek time performance" },
925 { 0x5d, 0x6b, "firmware impending failure spin-up retry count" },
926 { 0x5d, 0x6c, "firmware impending failure drive calibration retry count" },
927 { 0x5d, 0xff, "failure prediction threshold exceeded (false)" },
928 { 0x5e, 0x00, "low power condition active" },
929 { 0x5e, 0x01, "idle condition activated by timer" },
930 { 0x5e, 0x02, "standby condition activated by timer" },
931 { 0x5e, 0x03, "idle condition activated by command" },
932 { 0x5e, 0x04, "standby condition activated by command" },
933 { 0x60, 0x00, "lamp failure" },
934 { 0x61, 0x00, "video acquisition error" },
935 { 0x62, 0x00, "scan head positioning error" },
936 { 0x63, 0x00, "end of user area encountered on this track" },
937 { 0x63, 0x01, "packet does not fit in available space" },
938 { 0x64, 0x00, "illegal mode for this track" },
939 { 0x64, 0x01, "invalid packet size" },
940 { 0x65, 0x00, "voltage fault" },
941 { 0x66, 0x00, "automatic document feeder cover up" },
942 { 0x67, 0x00, "configuration failure" },
943 { 0x67, 0x01, "configuration of incapable LUNs failed" },
944 { 0x67, 0x02, "add LUN failed" },
945 { 0x67, 0x03, "modification of LUN failed" },
946 { 0x67, 0x04, "exchange of LUN failed" },
947 { 0x67, 0x05, "remove of LUN failed" },
948 { 0x67, 0x06, "attachment of LUN failed" },
949 { 0x67, 0x07, "creation of LUN failed" },
950 { 0x67, 0x08, "assign failure occurred" },
951 { 0x67, 0x09, "multiply assigned LUN" },
952 { 0x67, 0x0a, "set target port groups command failed" },
953 { 0x68, 0x00, "logical unit not configured" },
954 { 0x69, 0x00, "data loss on logical unit" },
955 { 0x69, 0x01, "multiple LUN failures" },
956 { 0x69, 0x02, "parity/data mismatch" },
957 { 0x6a, 0x00, "informational, refer to log" },
958 { 0x6b, 0x00, "state change has occurred" },
959 { 0x6b, 0x01, "redundancy level got better" },
960 { 0x6b, 0x02, "redundancy level got worse" },
961 { 0x6c, 0x00, "rebuild failure occurred" },
962 { 0x6d, 0x00, "recalculate failure occurred" },
963 { 0x6e, 0x00, "command to logical unit failed" },
964 { 0x6f, 0x00, "copy protect key exchange failure authentication failure" },
965 { 0x6f, 0x01, "copy protect key exchange failure key not present" },
966 { 0x6f, 0x02, "copy protect key exchange failure key not established" },
967 { 0x6f, 0x03, "read of scrambled sector without authentication" },
968 { 0x6f, 0x04, "media region code is mismatched to LUN region" },
969 { 0x6f, 0x05, "drive region must be permanent/region reset count error" },
970 { 0x70, 0xffff, "decompression exception short algorithm id of ASCQ" },
971 { 0x71, 0x00, "decompression exception long algorithm id" },
972 { 0x72, 0x00, "session fixation error" },
973 { 0x72, 0x01, "session fixation error writing lead-in" },
974 { 0x72, 0x02, "session fixation error writing lead-out" },
975 { 0x72, 0x03, "session fixation error - incomplete track in session" },
976 { 0x72, 0x04, "empty or partially written reserved track" },
977 { 0x72, 0x05, "no more track reservations allowed" },
978 { 0x73, 0x00, "cd control error" },
979 { 0x73, 0x01, "power calibration area almost full" },
980 { 0x73, 0x02, "power calibration area is full" },
981 { 0x73, 0x03, "power calibration area error" },
982 { 0x73, 0x04, "program memory area update failure" },
983 { 0x73, 0x05, "program memory area is full" },
984 { 0x73, 0x06, "rma/pma is almost full" },
985 { 0xffff, 0xffff, NULL }
986 };
987
988 char *
989 scsi_esname(uint_t key, char *tmpstr)
990 {
991 int i = 0;
992
993 while (extended_sense_list[i].asc != 0xffff) {
994 if (key == extended_sense_list[i].asc) {
995 return ((char *)extended_sense_list[i].message);
996 }
997 i++;
998 }
999 return (sprintf(tmpstr, "<vendor unique code 0x%x>", key));
1000 }
1001
1002 char *
1003 scsi_asc_name(uint_t asc, uint_t ascq, char *tmpstr)
1004 {
1005 int i = 0;
|