diff options
| author | Dan Engelbrecht <[email protected]> | 2022-03-30 17:38:54 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-03-30 17:38:54 +0200 |
| commit | e23f7951a8d5e9c8d7ea11b9eae2815aa9037604 (patch) | |
| tree | 854c396aec3fce4d1bfdebee86ec50b754a9bb6a | |
| parent | Merge pull request #66 from EpicGames/de/gracefully-exit-gc (diff) | |
| download | zen-e23f7951a8d5e9c8d7ea11b9eae2815aa9037604.tar.xz zen-e23f7951a8d5e9c8d7ea11b9eae2815aa9037604.zip | |
Retain flags for small objects in structured cache (#68)
| -rw-r--r-- | zenserver/cache/structuredcachestore.cpp | 4 | ||||
| -rw-r--r-- | zenserver/cache/structuredcachestore.h | 1 |
2 files changed, 3 insertions, 2 deletions
diff --git a/zenserver/cache/structuredcachestore.cpp b/zenserver/cache/structuredcachestore.cpp index cf066fb0e..769167433 100644 --- a/zenserver/cache/structuredcachestore.cpp +++ b/zenserver/cache/structuredcachestore.cpp @@ -979,14 +979,14 @@ ZenCacheDiskLayer::CacheBucket::CollectGarbage(GcContext& GcCtx) if (Loc.IsFlagSet(DiskLocation::kStandaloneFile)) { - NewLoc = DiskLocation(0, Loc.Size(), 0, DiskLocation::kStandaloneFile); + NewLoc = DiskLocation(0, Loc.Size(), 0, Loc.GetFlags()); } else { Chunk.resize(Loc.Size()); m_SobsFile.Read(Chunk.data(), Chunk.size(), Loc.Offset()); - NewLoc = DiskLocation(TmpCursor, Chunk.size(), 0, 0); + NewLoc = DiskLocation(TmpCursor, Chunk.size(), 0, Loc.GetFlags()); TmpSobs.Write(Chunk.data(), Chunk.size(), TmpCursor); TmpCursor = RoundUp(TmpCursor + Chunk.size(), 16); } diff --git a/zenserver/cache/structuredcachestore.h b/zenserver/cache/structuredcachestore.h index 9ffc06b28..f39d01747 100644 --- a/zenserver/cache/structuredcachestore.h +++ b/zenserver/cache/structuredcachestore.h @@ -96,6 +96,7 @@ struct DiskLocation inline uint64_t Offset() const { return OffsetAndFlags & kOffsetMask; } inline uint64_t Size() const { return LowerSize; } inline uint64_t IsFlagSet(uint64_t Flag) const { return OffsetAndFlags & Flag; } + inline uint64_t GetFlags() const { return OffsetAndFlags & kFlagsMask; } inline ZenContentType GetContentType() const { ZenContentType ContentType = ZenContentType::kBinary; |