The drivedb.h http://www.smartmontools.org/browser/trunk/smartmontools/drivedb.h doesn't mention the attribute (190 - Airflow_Temperature_Cel).  Is it that the smartctl supposed to report only the below values as specified in the drivedb.h (seems like not the case here)? There is no easy way to ignore some attributes on the command line.

 { "Crucial/Micron RealSSD m4/C400/P400", // Marvell 9176, fixed firmware
209    "C400-MTFDDA[ACK](064|128|256|512)MAM|"
210    "M4-CT(064|128|256|512)M4SSD[123]|" // tested with M4-CT512M4SSD2/0309
211    "MTFDDAK(064|128|256|512|050|100|200|400)MA[RN]-1[JKS]1AA.*", // tested with
212                                             // MTFDDAK256MAR-1K1AA/MA52
213    "030[9-Z]|03[1-Z].|0[4-Z]..|[1-Z]....*", // >= "0309"
214    "",
215  //"-v 1,raw48,Raw_Read_Error_Rate "
216  //"-v 5,raw16(raw16),Reallocated_Sector_Ct "
217  //"-v 9,raw24(raw8),Power_On_Hours "
218  //"-v 12,raw48,Power_Cycle_Count "
219    "-v 170,raw48,Grown_Failing_Block_Ct "
220    "-v 171,raw48,Program_Fail_Count "
221    "-v 172,raw48,Erase_Fail_Count "
222    "-v 173,raw48,Wear_Leveling_Count "
223    "-v 174,raw48,Unexpect_Power_Loss_Ct "
224    "-v 181,raw16,Non4k_Aligned_Access "
225    "-v 183,raw48,SATA_Iface_Downshift "
226  //"-v 184,raw48,End-to-End_Error "
227  //"-v 187,raw48,Reported_Uncorrect "
228  //"-v 188,raw48,Command_Timeout "
229    "-v 189,raw48,Factory_Bad_Block_Ct "
230  //"-v 194,tempminmax,Temperature_Celsius "
231  //"-v 195,raw48,Hardware_ECC_Recovered "
232  //"-v 196,raw16(raw16),Reallocated_Event_Count "
233  //"-v 197,raw48,Current_Pending_Sector "
234  //"-v 198,raw48,Offline_Uncorrectable "
235  //"-v 199,raw48,UDMA_CRC_Error_Count "
236    "-v 202,raw48,Perc_Rated_Life_Used "
237    "-v 206,raw48,Write_Error_Rate"
238  },

thanks,
Janny



On Wed, Jun 25, 2014 at 12:01 PM, Christian Franke <Christian.Franke@t-online.de> wrote:
Janardhan Molumuri wrote:
Thanks for your response, Christian.

>> smartctl -r ioctl,2 -i -H -d sat+megaraid,9 /dev/bus/0
Attaching the output. smart status check returned -1.
...

REPORT-IOCTL: Device=/dev/bus/0 Command=SMART STATUS CHECK
  Input:   FR=0xda, SC=...., LL=...., LM=0x4f, LH=0xc2, DEV=...., CMD=0xb0
  [ata pass-through(16): 85 06 2c 00 da 00 00 00 00 00 4f 00 c2 00 b0 00 ]

sat_device::ata_pass_through: scsi_pass_through() failed, errno=38 [ATA return descriptor not supported by controller firmware]
REPORT-IOCTL: Device=/dev/bus/0 Command=SMART STATUS CHECK returned -1 errno=38 [ATA return descriptor not supported by controller firmware]
SMART overall-health self-assessment test result: FAILED!
Drive failure expected in less than 24 hours. SAVE ALL DATA.
Failed Attributes:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
190 Airflow_Temperature_Cel 0x0023   019   033   069    Pre-fail  Always   FAILING_NOW 19 (Min/Max 17/33)

We have 3 issues here:

- LSI MegaRAID firmware does not support SAT ATA return descriptor which means that the (boolean) result from SMART RETURN STATUS command be read from the drive.

- smartctl reports this fact only in debug output (I fixed this in r3920).

- Drive returns bogus normalized VALUE and THRESHold for attribute 190.

If SMART RETURN STATUS does not work, smartctl checks the attribute table instead. Therefore smartctl reports a FAILED SMART test result which is possibly not identical to the actual status returned by the drive.



>>None of the specs or previous sample outputs from Micron RealSSDs include attribute 190.
What is the best way out in these cases to detect the health status of the disks? Is there a flag or something to detect the value type (normalized vs real)?

No, the value in the normalized VALUE field should always be normalized :-)

Could you possibly connect this drive to some Motherboard controller or other non-RAID controller and repeat the test?

Thanks,
Christian




--
-- JNR