Re: Linux kernel - Libata bad block error handling to user mode program

From: Robert Hancock
Date: Thu Mar 04 2010 - 20:59:04 EST


On 03/04/2010 12:20 PM, s ponnusa wrote:
SMART data consists only the count of remapped sectors, seek failures,
raw read error rate, uncorrectable sector counts, crc errors etc., and
technically one should be aware of the error during write operation as
well.

As per the ATAPI specifications, the media will report error for both
read / write operations. It times out / sends out error code for both
read and write operations. Correct me if I am wrong. What happens if
all the available free sectors are remapped and there are no more
sectors to map? In that atleast the drive should return an error
right? When using the O_DIRECT more, the i/o error, media bad,
softreset, hardreset error messages are starting to fill up dmesg
almost immediately after the write call.

It just tries in a continous loop and then finally returns success
(even without remapping). I don't know how to change the behavior of
libata / or other such driver which does it. All I want to do it to
know the error in my program while it is reporting it in the syslog at
kernel / driver level.

There's nothing in libata which will cause the operation to eventually return success if the drive keeps failing it (at least there definitely should not be and I very much doubt there is). My guess is that somehow what you think should be happening is not what the drive is actually doing (maybe one of the retries you're seeing is actually succeeding in writing to the disk, or at least the drive reports it was).

You haven't posted any of the actual kernel output you're seeing, so it's difficult to say exactly what's going on. However, attempting to scan for disk errors using writes seems like a flawed strategy. As several people have mentioned, drives can't necessarily detect errors on a write.


Thank you.

On Thu, Mar 4, 2010 at 12:49 PM, Mark Lord<kernel@xxxxxxxxxxxx> wrote:
On 03/04/10 10:33, foo saa wrote:
..

hdparm is good, but I don't want to use the internal ATA SECURE ERASE
because I can never get the amount of bad sectors the drive had.

..

Oh.. but isn't that information in the S.M.A.R.T. data ??

You'll not find the bad sectors by writing -- a true WRITE nearly never
reports a media error. Instead, the drive simply remaps to a good sector
on the fly and returns success.

Generally, only READs report media errors.

Cheers

--
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


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/