How does libata handles an 'ATA_ABORTED' error?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi list,

I have a CF card running in true-ide mode connected to regular PC. This CF 
card does wear leveling of its flash memory internally like every other CF 
card. With one exception: When the CF's firmware detects a broken NAND page 
while writing a sector, it moves around the remaining (good) data to other 
pages. To do this job it must discard the already transmitted sector data in 
its SRAM, because it needs this SRAM to move around the other flash memory 
data.

After the movement the firmware signals an 'ATA_ERR' in the status register 
and an 'ATA_ABORTED' in the error register to force the host to repeat to 
write the same data again (next time it will be successfull due to internal 
wear leveling is already done).

As we see data lost when the systems are running in production, I'm now trying 
to find out if the libata/SCSI layer really repeats the sector write for this 
case and does the expected (or required) things. But I'm lost in these 
software layers and their error path.

I found (in Documentation/DocBook/libata.tmpl):

"This is indicated by UNC bit in the ERROR register.  ATA
devices reports UNC error only after certain number of
retries cannot recover the data, so there's nothing much
else to do other than notifying upper layer."

which sounds to me as no repeat will happen for write errors, but 
the 'ATA_UNC' bit is not used to signal the "wear leveling case" shown above.

As far as I understand the ATA errors are transformed to SCSI errors and then 
handled in the SCSI layer. But the documentation tells me it is not easy to 
always find an adequate SCSI error for an ATA error. So, I'm not sure if for 
the "wear leveling case" the SCSI layer receives a "valuable" error message.

Does anybody can give me a hint, what really happens when the attached drive 
signals an 'ATA_ABORTED'? Does the libata/SCSI give up in this case, or will 
it repeat the command?

Regards,
Juergen

-- 
Pengutronix e.K.                              | Juergen Beisert             |
Linux Solutions for Science and Industry      | http://www.pengutronix.de/  |
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux