[Box Backup-commit] COMMIT r2757 - in box/invisnet/perfhack1: bin/bbstored lib/backupclient lib/raidfile
subversion at boxbackup.org
subversion at boxbackup.org
Tue Sep 28 00:55:35 BST 2010
Author: invisnet
Date: 2010-09-28 00:55:35 +0100 (Tue, 28 Sep 2010)
New Revision: 2757
Modified:
box/invisnet/perfhack1/bin/bbstored/BackupStoreContext.cpp
box/invisnet/perfhack1/lib/backupclient/BackupStoreDirectory.cpp
box/invisnet/perfhack1/lib/raidfile/RaidFileWrite.cpp
Log:
Deal with diff-less files, fix logic, and enforce sanity (via ASSERT) in the right place
Modified: box/invisnet/perfhack1/bin/bbstored/BackupStoreContext.cpp
===================================================================
--- box/invisnet/perfhack1/bin/bbstored/BackupStoreContext.cpp 2010-09-24 00:22:34 UTC (rev 2756)
+++ box/invisnet/perfhack1/bin/bbstored/BackupStoreContext.cpp 2010-09-27 23:55:35 UTC (rev 2757)
@@ -600,6 +600,8 @@
int64_t blocksInOldFiles = 0;
try
{
+ bool MarkedAsOld = false;
+
if(MarkFileWithSameNameAsOldVersions)
{
BackupStoreDirectory::Iterator i(dir);
@@ -620,6 +622,7 @@
// Can safely do this, because we know we won't be here if it's already
// an old version
blocksInOldFiles += e->GetSizeInBlocks();
+ MarkedAsOld = true;
}
}
}
@@ -653,7 +656,7 @@
}
// Write the directory back to disc
- SaveDirectory(dir, InDirectory, (0 == DiffFromFileID) /* Append last (new) entry only */ );
+ SaveDirectory(dir, InDirectory, (0 == DiffFromFileID && !MarkedAsOld) /* Append last (new) entry only */ );
// Commit the old version's new patched version, now that the directory safely reflects
// the state of the files on disc.
Modified: box/invisnet/perfhack1/lib/backupclient/BackupStoreDirectory.cpp
===================================================================
--- box/invisnet/perfhack1/lib/backupclient/BackupStoreDirectory.cpp 2010-09-24 00:22:34 UTC (rev 2756)
+++ box/invisnet/perfhack1/lib/backupclient/BackupStoreDirectory.cpp 2010-09-27 23:55:35 UTC (rev 2757)
@@ -281,12 +281,15 @@
ASSERT(mObjectID != 0);
ASSERT(mContainerID != 0);
+ ASSERT(mEntries.size() > 0);
+
Entry *pen = mEntries.back();
+ ASSERT(pen != 0);
if( FlagsMustBeSet == Entry::Flags_INCLUDE_EVERYTHING
&& FlagsNotToBeSet == Entry::Flags_EXCLUDE_NOTHING
&& !HasDependencyInfo()
- && ( (!StreamDependencyInfo && !HasDependencyInfoInline()) || (StreamDependencyInfo && HasDependencyInfoInline() == pen->HasDependencies()) ) )
+ && ( StreamDependencyInfo == HasDependencyInfoInline() || ( StreamDependencyInfo && !pen->HasDependencies() ) ) )
{
BOX_TRACE("Appending to directory");
@@ -303,7 +306,10 @@
StreamableMemBlock::WriteEmptyBlockToStream(rStream);
}
- rStream.Seek(0, IOStream::SeekType_End);
+ if(mEntries.size() > 1)
+ {
+ rStream.Seek(0, IOStream::SeekType_End);
+ }
pen->WriteToStream(rStream);
if(HasDependencyInfoInline())
{
Modified: box/invisnet/perfhack1/lib/raidfile/RaidFileWrite.cpp
===================================================================
--- box/invisnet/perfhack1/lib/raidfile/RaidFileWrite.cpp 2010-09-24 00:22:34 UTC (rev 2756)
+++ box/invisnet/perfhack1/lib/raidfile/RaidFileWrite.cpp 2010-09-27 23:55:35 UTC (rev 2757)
@@ -110,8 +110,6 @@
// --------------------------------------------------------------------------
void RaidFileWrite::Open(bool AllowOverwrite, bool UpdateOnly)
{
- ASSERT( !(AllowOverwrite && UpdateOnly) );
-
if(mOSFileHandle != -1)
{
THROW_EXCEPTION(RaidFileException, AlreadyOpen)
More information about the Boxbackup-commit
mailing list