diff options
| author | Dan Engelbrecht <[email protected]> | 2022-05-02 11:03:04 +0200 |
|---|---|---|
| committer | Dan Engelbrecht <[email protected]> | 2022-05-02 11:11:54 +0200 |
| commit | 10690e805f45a590094a659c8e1f6482d12aaf8e (patch) | |
| tree | 42aac794a1fcd723530aa0f2bc4940f095ece673 /zenstore/include | |
| parent | add back gc space reclaim call (diff) | |
| download | zen-10690e805f45a590094a659c8e1f6482d12aaf8e.tar.xz zen-10690e805f45a590094a659c8e1f6482d12aaf8e.zip | |
cleanup
Diffstat (limited to 'zenstore/include')
| -rw-r--r-- | zenstore/include/zenstore/blockstore.h | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/zenstore/include/zenstore/blockstore.h b/zenstore/include/zenstore/blockstore.h index 28f0a5541..53bcf72db 100644 --- a/zenstore/include/zenstore/blockstore.h +++ b/zenstore/include/zenstore/blockstore.h @@ -117,24 +117,28 @@ public: std::unordered_set<uint32_t> ExcludeBlockIndexes; size_t BlockCount; }; - typedef std::function<void(const std::vector<std::pair<size_t, BlockStoreLocation>>& MovedChunks, - const std::vector<size_t>& RemovedChunks)> - ReclaimCallback; - typedef std::function<uint64_t()> ClaimGCReserveCallback; - typedef std::function<void(const BlockStoreLocation& Location)> WriteChunkCallback; - typedef std::function<void(size_t ChunkIndex, const void* Data, uint64_t Size)> IterateChunksSmallSizeCallback; - typedef std::function<void(size_t ChunkIndex, BasicFile& BlockFile, uint64_t Offset, uint64_t Size)> IterateChunksLargeSizeCallback; - typedef std::function<void(const std::vector<std::pair<size_t, BlockStoreLocation>>& MovedChunks)> SplitCallback; + + typedef std::vector<std::pair<size_t, BlockStoreLocation>> MovedChunksArray; + typedef std::vector<size_t> ChunkIndexArray; + + typedef std::function<void(const MovedChunksArray& MovedChunks, const ChunkIndexArray& RemovedChunks)> ReclaimCallback; + typedef std::function<uint64_t()> ClaimGCReserveCallback; + typedef std::function<void(const BlockStoreLocation& Location)> WriteChunkCallback; + typedef std::function<void(size_t ChunkIndex, const void* Data, uint64_t Size)> IterateChunksSmallSizeCallback; + typedef std::function<void(size_t ChunkIndex, BasicFile& BlockFile, uint64_t Offset, uint64_t Size)> IterateChunksLargeSizeCallback; + typedef std::function<void(const MovedChunksArray& MovedChunks)> SplitCallback; void Initialize(const std::filesystem::path& BlocksBasePath, uint64_t MaxBlockSize, uint64_t MaxBlockCount, const std::vector<BlockStoreLocation>& KnownLocations); + void WriteChunk( const void* Data, uint64_t Size, uint64_t Alignment, WriteChunkCallback Callback = [](const BlockStoreLocation&) {}); + Ref<BlockStoreFile> GetChunkBlock(const BlockStoreLocation& Location); void Flush(); @@ -142,15 +146,16 @@ public: void ReclaimSpace( const ReclaimSnapshotState& Snapshot, const std::vector<BlockStoreLocation>& ChunkLocations, - const std::vector<size_t>& KeepChunkIndexes, + const ChunkIndexArray& KeepChunkIndexes, uint64_t PayloadAlignment, bool DryRun, - const ReclaimCallback& ChangeCallback = [](const std::vector<std::pair<size_t, BlockStoreLocation>>&, - const std::vector<size_t>&) {}, + const ReclaimCallback& ChangeCallback = [](const MovedChunksArray&, const ChunkIndexArray&) {}, const ClaimGCReserveCallback& GcReserveCallback = []() { return 0; }); - void IterateChunks(const std::vector<BlockStoreLocation>& ChunkLocations, - IterateChunksSmallSizeCallback SmallSizeCallback, - IterateChunksLargeSizeCallback LargeSizeCallback); + + void IterateChunks(const std::vector<BlockStoreLocation>& ChunkLocations, + IterateChunksSmallSizeCallback SmallSizeCallback, + IterateChunksLargeSizeCallback LargeSizeCallback); + static bool Split(const std::vector<BlockStoreLocation>& ChunkLocations, const std::filesystem::path& SourceBlockFilePath, const std::filesystem::path& BlocksBasePath, |