Kim Lester
2009-Jul-10  11:27 UTC
[zfs-discuss] SMART problems with AOC-SAT2-MV8 / marvell88sx driver
I''ve been trying to get either smartctl or sg3_utils to report
properly.
They both have the same low-level problems which leads me to suspect  
either I''m doing something wrong OR there is a problem in the  
marvell88sx / sd / SATA etc framework.
I can access drive name/serial number of all drives on the SAT2 card  
and the temperature is returned from the IE log page on my two drives  
that support temperature.
(The SATA disks on the motherboard that are attached to the cmdk  
driver work, but SMART fails because they are treated as ATA drives so  
ignore those)
What appears broken is I cannot access any of the logs such as the  
typical counters that I *know* exist.
If we look at sg3_utils output (prettier than smartctl)
src/sg_logs  /dev/rdsk/c1t0d0s0
     ATA       WDC WD15EADS-00R  0A01
Supported log pages:
     0x00        Supported log pages
     0x00        Supported log pages
     0x03        Error counters (read)
     0x04        Error counters (read reverse)
     0x00        Supported log pages
     0x10        Self-test results
     0x2f        Informational exceptions (SMART)
     0x30        Performance counters (Hitachi)
First strange matter is that I would EXPECT to see a list in numerical  
order with 0x00 appearing only once!
Well no matter I thought, but then a query on page 3 say tells me I  
have an illegal field in the CBD.
sg_logs -p 3 /dev/rdsk/c1t0d0s0
     ATA       WDC WD15EADS-00R  0A01
log_sense: field in cdb illegal
(smartctl said the same thing).
Turns out only the last 4 pages (00, 10, 2f, 30) actually work. The  
first 4 data values almost seem as if the returned data (12 bytes  
total: 4 header, 8 data) should actually be 8 header for some reason  
(although this is not correct for a LOG sense parameter block).
The log sense command is run to find the expected data length and it  
returns "12".
Delving further I found (but I''m now out of my depth) that there was a
total of 3072 bytes apparently coming back from the log sense command   
(according to both sg3 and smartctl) !!!???
sg3 shows it neatly.
sg_logs -v /dev/rdsk/c1t0d0s0
     inquiry cdb: 12 00 00 00 24 00
     ATA       WDC WD15EADS-00R  0A01
     log sense cdb: 4d 00 40 00 00 00 00 00 04 00
     log sense: requested 4 bytes but got -3068 bytes
     log sense cdb: 4d 00 40 00 00 00 00 00 0c 00
     log sense: requested 12 bytes but got -3060 bytes
Supported log pages:
     0x00        Supported log pages
     0x00        Supported log pages
     0x03        Error counters (read)
     0x04        Error counters (read reverse)
     0x00        Supported log pages
     0x10        Self-test results
     0x2f        Informational exceptions (SMART)
     0x30        Performance counters (Hitachi)
Not sure about the -sign - maybe a wrap ? esp given 3068 + 4 == 3060 +  
12 == 3072
I hacked smartctl src to give me its count:
logSense:
pagelen =12  (# bytes driver stated would be returned)
Resid  = 3072   (#bytes actually returned)
Sooo I''m stuck and I still can''t access my drive stats! :-(
Any help would be very gratefully received.
cheers
Kim
=========System Details
uname -a -> SunOS bigbertha 5.11 NexentaOS_20081207 i86pc i386 i86pc  
Solaris
motherboard: Intel Server  SE7320SP2
SATA card: Supermicro AOC-SAT2-MV8  PCI-X
prtpicl extract
...
              pci8086,25ae (pci, d800000132)
                  pci11ab,11ab (obp-device, d800000155)
                      disk (block, d80000017f)
                      disk (block, d8000001a2)
                      disk (block, d8000001c5)
                      disk (block, d8000001e8)
                      disk (block, d80000020b)
...
              pci-ide (pci-ide, d800000405)
                  ide (obp-device, d80000042c)
                  ide (obp-device, d800000435)
              pci-ide (pci-ide, d80000043e)
                  ide (ide, d800000466)
                      cmdk (block, d800000477)
                  ide (ide, d80000048e)
                      sd (cdrom, d8000004a5)
/etc/path_to_inst
"/pci at 0,0/pci8086,25ae at 1c/pci11ab,11ab at 3" 0
"marvell88sx"
"/pci at 0,0/pci8086,25ae at 1c/pci11ab,11ab at 3/disk at 0,0" 3
"sd"
"/pci at 0,0/pci8086,25ae at 1c/pci11ab,11ab at 3/disk at 2,0" 4
"sd"
"/pci at 0,0/pci8086,25ae at 1c/pci11ab,11ab at 3/disk at 3,0" 5
"sd"
"/pci at 0,0/pci8086,25ae at 1c/pci11ab,11ab at 3/disk at 4,0" 6
"sd"
"/pci at 0,0/pci8086,25ae at 1c/pci11ab,11ab at 3/disk at 1,0" 9
"sd"
"/pci at 0,0/pci-ide at 1f,1" 0 "pci-ide"
"/pci at 0,0/pci-ide at 1f,1/ide at 0" 0 "ata"
"/pci at 0,0/pci-ide at 1f,1/ide at 0/sd at 0,0" 1 "sd"
"/pci at 0,0/pci-ide at 1f,1/ide at 1" 1 "ata"
"/pci at 0,0/pci-ide at 1f,2" 1 "pci-ide"
"/pci at 0,0/pci-ide at 1f,2/ide at 0" 2 "ata"
"/pci at 0,0/pci-ide at 1f,2/ide at 0/cmdk at 0,0" 0 "cmdk"
"/pci at 0,0/pci-ide at 1f,2/ide at 0/sd at 0,0" 7 "sd"
"/pci at 0,0/pci-ide at 1f,2/ide at 1" 3 "ata"
"/pci at 0,0/pci-ide at 1f,2/ide at 1/sd at 0,0" 0 "sd"
"/pci at 0,0/pci-ide at 1f,2/ide at 1/sd at 1,0" 8 "sd"
"/pci at 0,0/pci-ide at 1f,2/ide at 1/cmdk at 0,0" 1 "cmdk"
and for what it''s worth
85 -rwxr-xr-x 1 root sys 85592 Dec  8  2008 /kernel/drv/amd64/ 
marvell88sx
58 -rwxr-xr-x 1 root sys 58224 Dec  8  2008 /kernel/drv/marvell88sx
Ross
2009-Jul-10  11:50 UTC
[zfs-discuss] SMART problems with AOC-SAT2-MV8 / marvell88sx driver
I don''t know how relevant this is to you on Nexenta, but I can tell you that the driver support for that card improved tremendously with OpenSolaris 2008.11. All of our hot swap problems went away with that release but the change wasn''t documented anywhere that I could see. It might be worth simply booting off a 2009.06 live CD and seeing if any of these commands work. -- This message posted from opensolaris.org