aboutsummaryrefslogtreecommitdiff
path: root/zenstore/compactcas.h
diff options
context:
space:
mode:
Diffstat (limited to 'zenstore/compactcas.h')
-rw-r--r--zenstore/compactcas.h16
1 files changed, 10 insertions, 6 deletions
diff --git a/zenstore/compactcas.h b/zenstore/compactcas.h
index 05bbf81f6..101e6b1b7 100644
--- a/zenstore/compactcas.h
+++ b/zenstore/compactcas.h
@@ -14,9 +14,6 @@
#include <zenstore/cas.h>
#include <zenstore/caslog.h>
-#include <atlfile.h>
-#include <functional>
-
namespace zen {
//////////////////////////////////////////////////////////////////////////
@@ -27,7 +24,10 @@ namespace zen {
struct CasDiskLocation
{
uint64_t Offset;
- uint32_t Size; // TODO: Make this more like the IoStore index so we can store larger chunks (should be five bytes)
+ // If we wanted to be able to store larger chunks using this storage mechanism then
+ // we could make this more like the IoStore index so we can store larger chunks.
+ // I.e use five bytes for size and seven for offset
+ uint32_t Size;
};
struct CasDiskIndexEntry
@@ -50,7 +50,9 @@ static_assert(sizeof(CasDiskIndexEntry) == 32);
struct CasContainerStrategy
{
- CasContainerStrategy(const CasStoreConfiguration& Config, CasStore::Stats& Stats) : m_Config(Config), m_Stats(Stats) {}
+ CasContainerStrategy(const CasStoreConfiguration& Config);
+ ~CasContainerStrategy();
+
CasStore::InsertResult InsertChunk(const void* ChunkData, size_t ChunkSize, const IoHash& ChunkHash);
CasStore::InsertResult InsertChunk(IoBuffer Chunk, const IoHash& chunkHash);
IoBuffer FindChunk(const IoHash& ChunkHash);
@@ -58,10 +60,10 @@ struct CasContainerStrategy
void FilterChunks(CasChunkSet& InOutChunks);
void Initialize(const std::string_view ContainerBaseName, uint64_t Alignment, bool IsNewStore);
void Flush();
+ void Scrub(ScrubContext& Ctx);
private:
const CasStoreConfiguration& m_Config;
- CasStore::Stats& m_Stats;
uint64_t m_PayloadAlignment = 1 << 4;
bool m_IsInitialized = false;
BasicFile m_SmallObjectFile;
@@ -73,6 +75,8 @@ private:
RwLock m_InsertLock; // used to serialize inserts
std::atomic<uint64_t> m_CurrentInsertOffset = 0;
std::atomic<uint64_t> m_CurrentIndexOffset = 0;
+
+ void MakeSnapshot();
};
} // namespace zen