Skip to contentSkip to conversation

sct erc does not work with megaraid

DISCUSSION Bokhan Artem 2 participants 2 messages Feb 15, 2011 SCSI

lore
Share & tools
lore
#0 lore raw

Hello!

I'm trying to get/set sctserc (SMART Command Transport Error Recovery Control) data from sata disk attached to lsi megaraid controller with smartmontools, but this function does not work.

I want to figure out: is this driver or firmware issue? May someone to help to fix this?

The issue can be described as follows:

The ATA PASS-THROUGH(16) implementation in the SAT layer of the megaraid driver or firmware does not return the ATA output registers if requested. This violates SAT standard (http://www.t10.org/drafts.htm#SAT).

Expected: If CK_COND (bit 5 of CDB[2]) is set, ATA PASS-THROUGH(16) (CDB[0] = 0x85) shall return a CHECK CONDITION even if the ATA command completed successfully, and return the ATA output registers in the sense data using ATA return descriptor format (descriptor code 0x09).

Observed: If CK_COND is set and the ATA command completed successfully, ATA PASS-THROUGH(16) does not return a CHECK CONDITION or the sense data does not contain an ATA return descriptor.

See also the smartmontools SAT implementation (http://sourceforge.net/apps/trac/smartmontools/browser/trunk/smartmontools/scsiata.cpp?rev=3258#L146) for further info.

#1 lore raw
Quoted 20 lines · Bokhan Artem

Hello!

I'm trying to get/set sctserc (SMART Command Transport Error Recovery Control) data from sata disk attached to lsi megaraid controller with smartmontools, but this function does not work.

I want to figure out: is this driver or firmware issue? May someone to help to fix this?

The issue can be described as follows:

The ATA PASS-THROUGH(16) implementation in the SAT layer of the megaraid driver or firmware does not return the ATA output registers if requested. This violates SAT standard (http://www.t10.org/drafts.htm#SAT).

Expected: If CK_COND (bit 5 of CDB[2]) is set, ATA PASS-THROUGH(16) (CDB[0] = 0x85) shall return a CHECK CONDITION even if the ATA command completed successfully, and return the ATA output registers in the sense data using ATA return descriptor format (descriptor code 0x09).

Quoted 5 lines

Observed: If CK_COND is set and the ATA command completed successfully, ATA PASS-THROUGH(16) does not return a CHECK CONDITION or the sense data does not contain an ATA return descriptor.

From the description, it's a firmware issue ... the driver tends to

return exactly what the firmware tells it. There's definitely no special processing for ATA_12 or ATA_16 commands, they're treated as normal SCSI ones, so if there's no SAM_STAT_CHECK_CONDITION, the firmware isn't sending one.

James