Print this page
7127  remove -Wno-missing-braces from Makefile.uts


 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;