diff options
| author | Dan Engelbrecht <[email protected]> | 2022-03-28 23:53:43 +0200 |
|---|---|---|
| committer | Dan Engelbrecht <[email protected]> | 2022-03-31 11:29:28 +0200 |
| commit | 48af35f02dae1a5f6739cbe5e936f93f76f54a12 (patch) | |
| tree | b0a4618e5cf0ad2253632d50a0e6d6f3c470d64d /zenstore/compactcas.cpp | |
| parent | cleanup (diff) | |
| download | zen-48af35f02dae1a5f6739cbe5e936f93f76f54a12.tar.xz zen-48af35f02dae1a5f6739cbe5e936f93f76f54a12.zip | |
Properly figure out block ranges in migration
Don't assume chunks don't have space between them.
Diffstat (limited to 'zenstore/compactcas.cpp')
| -rw-r--r-- | zenstore/compactcas.cpp | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/zenstore/compactcas.cpp b/zenstore/compactcas.cpp index 45140b79a..1c4f7db51 100644 --- a/zenstore/compactcas.cpp +++ b/zenstore/compactcas.cpp @@ -330,15 +330,9 @@ namespace { return Result; } - uint64_t MaxUsedSize = 0; for (const auto& Entry : LegacyDiskIndex) { const LegacyCasDiskIndexEntry& Record(Entry.second); - uint64_t EntryEnd = Record.Location.GetOffset() + Record.Location.GetSize(); - if (EntryEnd > MaxUsedSize) - { - MaxUsedSize = EntryEnd; - } TotalSize += Record.Location.GetSize(); } @@ -441,12 +435,13 @@ namespace { uint64_t ChunkOffset = LegacyChunkLocation.GetOffset(); uint64_t ChunkSize = LegacyChunkLocation.GetSize(); + uint64_t ChunkEnd = ChunkOffset + ChunkSize; if (BlockSize == 0) { BlockOffset = ChunkOffset; } - if ((BlockSize + ChunkSize) > MaxBlockSize) + if ((ChunkEnd - BlockOffset) > MaxBlockSize) { BlockData BlockRange{.BlockOffset = BlockOffset, .BlockSize = BlockSize, .BlockIndex = WriteBlockIndex}; BlockRange.Chunks.swap(Chunks); @@ -463,7 +458,7 @@ namespace { BlockSize = RoundUp(BlockSize, PayloadAlignment); BlockStoreLocation ChunkLocation = {.BlockIndex = WriteBlockIndex, .Offset = BlockSize, .Size = ChunkSize}; Chunks.push_back({ChunkHash, ChunkLocation}); - BlockSize += ChunkSize; + BlockSize += ChunkEnd - BlockOffset; } if (BlockSize > 0) { |