If the statcache indicates that a file should be unchanged, but we have
read the file contents anyway (generally, because this was needed for
segment cleaning), then comparing the old and new checksums is basically
free. Do so, and report any discrepancies as they may indicate on-disk
corruption.
file_info["checksum"] = file_hash->digest_str();
}
file_info["checksum"] = file_hash->digest_str();
}
- // Sanity check: if we are rebuilding the statcache, but the file looks
- // like it hasn't changed, then the newly-computed checksum should match
- // the checksum in the statcache. If not, we have possible disk corruption
- // and report a warning.
- if (flag_rebuild_statcache) {
- if (found
- && metawriter->is_unchanged(&stat_buf)
- && file_info["checksum"] != metawriter->get_checksum()) {
- fprintf(stderr,
- "Warning: Checksum for %s does not match expected value\n"
- " expected: %s\n"
- " actual: %s\n",
- path.c_str(),
- metawriter->get_checksum().c_str(),
- file_info["checksum"].c_str());
- }
+ // Sanity check: if the file looks like it hasn't changed, then the
+ // newly-computed checksum should match the checksum in the statcache. If
+ // not, we have possible disk corruption and report a warning.
+ if (found
+ && metawriter->is_unchanged(&stat_buf)
+ && file_info["checksum"] != metawriter->get_checksum()) {
+ fprintf(stderr,
+ "Warning: Checksum for %s does not match expected value\n"
+ " expected: %s\n"
+ " actual: %s\n",
+ path.c_str(),
+ metawriter->get_checksum().c_str(),
+ file_info["checksum"].c_str());
}
if (verbose && status != NULL)
}
if (verbose && status != NULL)