Marc MERLIN posted on Fri, 09 May 2014 20:40:26 -0700 as excerpted: > On May 10, 2014 10:09 AM, "Hugo Mills" <h...@carfax.org.uk> wrote: >> As in, "Your filesystem got corruption as a result of a bug in some >> earlier version. Upgrading to the new version isn't magically going to >> make that corruption go away". (Not saying that's what's happened here, >> but it's common, and commonly misunderstood). > > That's a fair point but I run scrub every day with errors if any, mailed > to me. > Can scrub miss latent corruption?
Depends on the type of corruption. Scrub simply checks the checksums, replacing any bad copies it finds with good copies if there's good copies to do so with (thus my raid1 here, giving me an alternate to look at, too bad I can't get N-way-mirroring yet and have a second alternate just in case). Bitflipping and random corruption, it should detect and if possible fix, no problem. But if the bug was a logic error and btrfs validly checksummed bad (meta)data due to that faulty logic, scrub won't do anything to find that, because all it does is validate the checksum and that's perfectly fine -- the result of the faulty logic was still faulty, but perfectly retained. =:^\ Faulty logic is what rebalance and btrfs check will try to detect, except unlike checksums which are binary case and match or don't match, there's all /sorts/ of ways logic can be faulty, and given the immaturity of the tools, there's still some decent gaps in what they'll detect -- there's a LOT more ways that the filesystem can be wrong and the logic faulty than we know about yet, and if we don't know about it, it's pretty hard to test for it. (Let alone the case of btrfs check /thinking/ it detects something wrong, but either it's fine, or it's wrong in a different way than btrfs check thinks, such that btrfs check --repair could actually make things worse... thus the recommendation not to blindly run --repair, only as a last resort before a new mkfs, or on the specific recommendation of a dev.) Bottom line, if the logic was wrong, scrub isn't likely to catch the problem, since the checksum on the faulty logic output can and likely will still be perfectly valid. It's simply the wrong tool to detect that sort of error. -- Duncan - List replies preferred. No HTML msgs. "Every nonfree program has a lord, a master -- and if you use the program, he is your master." Richard Stallman -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html