Re: mismatch_cnt again
From: Bill Davidsen <hidden>
Date: 2009-11-09 18:22:03
Piergiorgio Sartor wrote:
Hi,quoted
But unless your drive firmware is broken the drive with only ever give the correct data or an error. Smart has a counter for blocks that have gone bad and will be fixed pending a write to them: Current_Pending_Sector. The only way the drive should be able to give you bad data is if multiple bits toggle in such a way that the ECC still fits.Not really, I've disks which are *perfect* in smart sense and nevertheless I had mistmatch count. This was a SW problem, I think now fixed, in RAID-10 code.
IIRC there still is an error in raid-1 code, in that data is written to multiple drives without preventing modification of the memory between writes. As I understand Neil's explanation, this happens (a) when memory is being changed rapidly and frequently via memory mapped files, or (b) writing via O_DIRECT, or (c) when raid-1 is being used for swap. I'm not totally sure why the last one, but I have always seem mismatches on swap in a system which is actually swapping. What is more troubling is that if I do a hibernate, which writes to swap, and then force a boot from other media to a Live-CD, doing a check of the swap array occasionally shows a mismatch. That doesn't give me a secure feeling, although I have never had an issue in practice, I was just curious.
This means that, yes, there could be mismatches, without any warning, from other sources than disks. And these could be anywhere in the system. I already mentioned, time ago, a cabling problem which was leading to a similar result: wrong data on different disks, without any warning or error from the HW layer. That is why it is important to know *where* the mismatch occurs and, if possible, in which device component. If it is an empty part of the FS, no problem, if it belongs to a specific file, then it would be possible to restore/recreate it. Of course, a tool will be needed telling which file is using a certain block of the device.
There are tools which claim to do that, or list blocks used in a given file, which is not nearly as useful, but easier to do. -- Bill Davidsen [off-list ref] "We can't solve today's problems by using the same thinking we used in creating them." - Einstein