diff options
Diffstat (limited to 'lib/backupstore/BackupStoreCheck.cpp')
-rw-r--r-- | lib/backupstore/BackupStoreCheck.cpp | 100 |
1 files changed, 65 insertions, 35 deletions
diff --git a/lib/backupstore/BackupStoreCheck.cpp b/lib/backupstore/BackupStoreCheck.cpp index af849c40..61895e2f 100644 --- a/lib/backupstore/BackupStoreCheck.cpp +++ b/lib/backupstore/BackupStoreCheck.cpp @@ -1,4 +1,4 @@ -// distribution boxbackup-0.10 (svn version: 494) +// distribution boxbackup-0.11rc1 (svn version: 2023_2024) // // Copyright (c) 2003 - 2006 // Ben Summers and contributors. All rights reserved. @@ -140,7 +140,7 @@ void BackupStoreCheck::Check() // Couldn't lock the account -- just stop now if(!mQuiet) { - ::printf("Couldn't lock the account -- did not check.\nTry again later after the client has disconnected.\nAlternatively, forcibly kill the server.\n"); + BOX_ERROR("Failed to lock the account -- did not check.\nTry again later after the client has disconnected.\nAlternatively, forcibly kill the server."); } THROW_EXCEPTION(BackupStoreException, CouldNotLockStoreAccount) } @@ -148,41 +148,43 @@ void BackupStoreCheck::Check() if(!mQuiet && mFixErrors) { - ::printf("NOTE: Will fix errors encountered during checking.\n"); + BOX_NOTICE("Will fix errors encountered during checking."); } // Phase 1, check objects if(!mQuiet) { - ::printf("Check store account ID %08x\nPhase 1, check objects...\n", mAccountID); + BOX_INFO("Checking store account ID " << + BOX_FORMAT_ACCOUNT(mAccountID) << "..."); + BOX_INFO("Phase 1, check objects..."); } CheckObjects(); // Phase 2, check directories if(!mQuiet) { - ::printf("Phase 2, check directories...\n"); + BOX_INFO("Phase 2, check directories..."); } CheckDirectories(); // Phase 3, check root if(!mQuiet) { - ::printf("Phase 3, check root...\n"); + BOX_INFO("Phase 3, check root..."); } CheckRoot(); // Phase 4, check unattached objects if(!mQuiet) { - ::printf("Phase 4, fix unattached objects...\n"); + BOX_INFO("Phase 4, fix unattached objects..."); } CheckUnattachedObjects(); // Phase 5, fix bad info if(!mQuiet) { - ::printf("Phase 5, fix unrecovered inconsistencies...\n"); + BOX_INFO("Phase 5, fix unrecovered inconsistencies..."); } FixDirsWithWrongContainerID(); FixDirsWithLostDirs(); @@ -190,7 +192,7 @@ void BackupStoreCheck::Check() // Phase 6, regenerate store info if(!mQuiet) { - ::printf("Phase 6, regenerate store info...\n"); + BOX_INFO("Phase 6, regenerate store info..."); } WriteNewStoreInfo(); @@ -198,29 +200,40 @@ void BackupStoreCheck::Check() if(mNumberErrorsFound > 0) { - ::printf("%lld errors found\n", mNumberErrorsFound); + BOX_WARNING("Finished checking store account ID " << + BOX_FORMAT_ACCOUNT(mAccountID) << ": " << + mNumberErrorsFound << " errors found"); if(!mFixErrors) { - ::printf("NOTE: No changes to the store account have been made.\n"); + BOX_WARNING("No changes to the store account " + "have been made."); } if(!mFixErrors && mNumberErrorsFound > 0) { - ::printf("Run again with fix option to fix these errors\n"); + BOX_WARNING("Run again with fix option to " + "fix these errors"); } - if(mNumberErrorsFound > 0) + if(mFixErrors && mNumberErrorsFound > 0) { - ::printf("You should now use bbackupquery on the client machine to examine the store.\n"); + BOX_WARNING("You should now use bbackupquery " + "on the client machine to examine the store."); if(mLostAndFoundDirectoryID != 0) { - ::printf("A lost+found directory was created in the account root.\n"\ - "This contains files and directories which could not be matched to existing directories.\n"\ - "bbackupd will delete this directory in a few days time.\n"); + BOX_WARNING("A lost+found directory was " + "created in the account root.\n" + "This contains files and directories " + "which could not be matched to " + "existing directories.\n"\ + "bbackupd will delete this directory " + "in a few days time."); } } } else { - ::printf("Store account checked, no errors found.\n"); + BOX_NOTICE("Finished checking store account ID " << + BOX_FORMAT_ACCOUNT(mAccountID) << ": " + "no errors found"); } } @@ -342,7 +355,10 @@ int64_t BackupStoreCheck::CheckObjectsScanDir(int64_t StartID, int Level, const } else { - ::printf("Spurious or invalid directory %s/%s found%s -- delete manually\n", rDirName.c_str(), (*i).c_str(), mFixErrors?", deleting":""); + BOX_WARNING("Spurious or invalid directory " << + rDirName << DIRECTORY_SEPARATOR << + (*i) << " found, " << + (mFixErrors?"deleting":"delete manually")); ++mNumberErrorsFound; } } @@ -366,14 +382,15 @@ void BackupStoreCheck::CheckObjectsDir(int64_t StartID) std::string dirName; StoreStructure::MakeObjectFilename(StartID, mStoreRoot, mDiscSetNumber, dirName, false /* don't make sure the dir exists */); // Check expectations - ASSERT(dirName.size() > 4 && dirName[dirName.size() - 4] == '/'); + ASSERT(dirName.size() > 4 && + dirName[dirName.size() - 4] == DIRECTORY_SEPARATOR_ASCHAR); // Remove the filename from it dirName.resize(dirName.size() - 4); // four chars for "/o00" // Check directory exists if(!RaidFileRead::DirectoryExists(mDiscSetNumber, dirName)) { - TRACE1("RaidFile dir %s does not exist\n", dirName.c_str()); + BOX_WARNING("RaidFile dir " << dirName << " does not exist"); return; } @@ -415,7 +432,9 @@ void BackupStoreCheck::CheckObjectsDir(int64_t StartID) if(!fileOK) { // Unexpected or bad file, delete it - ::printf("Spurious file %s/%s found%s\n", dirName.c_str(), (*i).c_str(), mFixErrors?", deleting":""); + BOX_WARNING("Spurious file " << dirName << + DIRECTORY_SEPARATOR << (*i) << " found" << + (mFixErrors?", deleting":"")); ++mNumberErrorsFound; if(mFixErrors) { @@ -436,7 +455,9 @@ void BackupStoreCheck::CheckObjectsDir(int64_t StartID) if(!CheckAndAddObject(StartID | i, dirName + leaf)) { // File was bad, delete it - ::printf("Corrupted file %s%s found%s\n", dirName.c_str(), leaf, mFixErrors?", deleting":""); + BOX_WARNING("Corrupted file " << dirName << + leaf << " found" << + (mFixErrors?", deleting":"")); ++mNumberErrorsFound; if(mFixErrors) { @@ -504,11 +525,10 @@ bool BackupStoreCheck::CheckAndAddObject(int64_t ObjectID, const std::string &rF } // Add to usage counts - int64_t s = file->GetDiscUsageInBlocks(); - mBlocksUsed += s; + mBlocksUsed += size; if(!isFile) { - mBlocksInDirectories += s; + mBlocksInDirectories += size; } } catch(...) @@ -545,7 +565,7 @@ int64_t BackupStoreCheck::CheckFile(int64_t ObjectID, IOStream &rStream) if(ObjectID == BACKUPSTORE_ROOT_DIRECTORY_ID) { // Get that dodgy thing deleted! - ::printf("Have file as root directory. This is bad.\n"); + BOX_ERROR("Have file as root directory. This is bad."); return -1; } @@ -632,7 +652,9 @@ void BackupStoreCheck::CheckDirectories() if(dir.CheckAndFix()) { // Wasn't quite right, and has been modified - ::printf("Directory ID %llx has bad structure\n", pblock->mID[e]); + BOX_WARNING("Directory ID " << + BOX_FORMAT_OBJECTID(pblock->mID[e]) << + " has bad structure"); ++mNumberErrorsFound; isModified = true; } @@ -658,7 +680,11 @@ void BackupStoreCheck::CheckDirectories() != ((en->GetFlags() & BackupStoreDirectory::Entry::Flags_Dir) == BackupStoreDirectory::Entry::Flags_Dir)) { // Entry is of wrong type - ::printf("Directory ID %llx references object %llx which has a different type than expected.\n", pblock->mID[e], en->GetObjectID()); + BOX_WARNING("Directory ID " << + BOX_FORMAT_OBJECTID(pblock->mID[e]) << + " references object " << + BOX_FORMAT_OBJECTID(en->GetObjectID()) << + " which has a different type than expected."); badEntry = true; } else @@ -666,8 +692,12 @@ void BackupStoreCheck::CheckDirectories() // Check that the entry is not already contained. if(iflags & Flags_IsContained) { + BOX_WARNING("Directory ID " << + BOX_FORMAT_OBJECTID(pblock->mID[e]) << + " references object " << + BOX_FORMAT_OBJECTID(en->GetObjectID()) << + " which is already contained."); badEntry = true; - ::printf("Directory ID %llx references object %llx which is already contained.\n", pblock->mID[e], en->GetObjectID()); } else { @@ -681,13 +711,13 @@ void BackupStoreCheck::CheckDirectories() if(iflags & Flags_IsDir) { // Add to will fix later list - ::printf("Directory ID %llx has wrong container ID.\n", en->GetObjectID()); + BOX_WARNING("Directory ID " << BOX_FORMAT_OBJECTID(en->GetObjectID()) << " has wrong container ID."); mDirsWithWrongContainerID.push_back(en->GetObjectID()); } else { // This is OK for files, they might move - ::printf("File ID %llx has different container ID, probably moved\n", en->GetObjectID()); + BOX_WARNING("File ID " << BOX_FORMAT_OBJECTID(en->GetObjectID()) << " has different container ID, probably moved"); } // Fix entry for now @@ -706,7 +736,7 @@ void BackupStoreCheck::CheckDirectories() // Mark as changed isModified = true; // Tell user - ::printf("Directory ID %llx has wrong size for object %llx\n", pblock->mID[e], en->GetObjectID()); + BOX_WARNING("Directory ID " << BOX_FORMAT_OBJECTID(pblock->mID[e]) << " has wrong size for object " << BOX_FORMAT_OBJECTID(en->GetObjectID())); } } } @@ -722,7 +752,7 @@ void BackupStoreCheck::CheckDirectories() { // Just remove the entry badEntry = true; - ::printf("Directory ID %llx references object %llx which does not exist.\n", pblock->mID[e], en->GetObjectID()); + BOX_WARNING("Directory ID " << BOX_FORMAT_OBJECTID(pblock->mID[e]) << " references object " << BOX_FORMAT_OBJECTID(en->GetObjectID()) << " which does not exist."); } } @@ -765,7 +795,7 @@ void BackupStoreCheck::CheckDirectories() if(isModified && mFixErrors) { - ::printf("Fixing directory ID %llx\n", pblock->mID[e]); + BOX_WARNING("Fixing directory ID " << BOX_FORMAT_OBJECTID(pblock->mID[e])); // Save back to disc RaidFileWrite fixed(mDiscSetNumber, filename); |