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

Alan Cox
2010-03-05T12:01:04Z

> cannot be read back by any other means. And the program which wrote
> the data is unaware of the error that has happened at the lower level.
> But the error log clearly has the issue caught but is trying to handle
> differently.

This is standard behaviour on pretty much every OS. If each write was
back verified by the OS you wouldn't get any work done due fact it took
so long to do any I/O and all I/O was synchronoous.

Where it matters you can mount some file systems synchronous, you can do
synchronous I/O (O_SYNC) or you can use and check fsync/fdatasync results
which should give you pretty good coverage providing barriers are enabled.

It still won't catch a lot of cases because you sometimes see

- sectors being corrupted/dying that were not written by near to it
- writes that the drive thinks were successful and reports that way but
turn out not to be readable

Alan