X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=scandir.cc;h=ef7833c6f86438cb5fa104c2ebb7e841a64aa345;hb=682c41cb7eeb03676a44e3d51891d57e5e16bb48;hp=10e908b68e342aaa4bb91786d6aea908ec6257c1;hpb=8fb5b2c6e85aece6419c28cef278d1ae4204520f;p=cumulus.git diff --git a/scandir.cc b/scandir.cc index 10e908b..ef7833c 100644 --- a/scandir.cc +++ b/scandir.cc @@ -270,6 +270,10 @@ int64_t dumpfile(int fd, dictionary &file_info, const string &path, subfile.analyze_new_block(block_buf, bytes); refs = subfile.create_incremental(tss, o, block_age); } else { + if (flag_rebuild_statcache && ref.is_normal()) { + subfile.analyze_new_block(block_buf, bytes); + subfile.store_analyzed_signatures(ref); + } refs.push_back(ref); } @@ -294,7 +298,9 @@ int64_t dumpfile(int fd, dictionary &file_info, const string &path, // the checksum in the statcache. If not, we have possible disk corruption // and report a warning. if (flag_rebuild_statcache) { - if (found && file_info["checksum"] != metawriter->get_checksum()) { + 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" @@ -628,6 +634,7 @@ void usage(const char *program) " --intent=FLOAT intended backup type: 1=daily, 7=weekly, ...\n" " (defaults to \"1\")\n" " --full-metadata do not re-use metadata from previous backups\n" + " --rebuild-statcache re-read all file data to verify statcache\n" " -v --verbose list files as they are backed up\n" "\n" "Exactly one of --dest or --upload-script must be specified.\n",