diff --git a/src/lib/homestore/heap_chunk_selector.cpp b/src/lib/homestore/heap_chunk_selector.cpp index d48fef52..ccd1daf6 100644 --- a/src/lib/homestore/heap_chunk_selector.cpp +++ b/src/lib/homestore/heap_chunk_selector.cpp @@ -117,4 +117,16 @@ void HeapChunkSelector::build_per_dev_chunk_heap(const std::unordered_set< chunk if (excludingChunks.find(p.first) == excludingChunks.end()) { add_chunk_internal(p.first); } }; } -} // namespace homeobject \ No newline at end of file + +homestore::blk_alloc_hints HeapChunkSelector::get_blk_alloc_hints_on_same_pdev(chunk_num_t chunk_id) const { + auto iter = m_chunks.find(chunk_id); + if (iter == m_chunks.end()) { + LOGWARN("No chunk found for ChunkID {}, will return default blk alloc hints", chunk_id); + return homestore::blk_alloc_hints(); + } + homestore::blk_alloc_hints hints; + hints.pdev_id_hint = VChunk(iter->second).get_pdev_id(); + return hints; +} + +} // namespace homeobject diff --git a/src/lib/homestore/heap_chunk_selector.h b/src/lib/homestore/heap_chunk_selector.h index 20de80c8..149d5110 100644 --- a/src/lib/homestore/heap_chunk_selector.h +++ b/src/lib/homestore/heap_chunk_selector.h @@ -46,6 +46,8 @@ class HeapChunkSelector : public homestore::ChunkSelector { // this should be called after ShardManager is initialized and get all the open shards void build_per_dev_chunk_heap(const std::unordered_set< chunk_num_t >& excludingChunks); + homestore::blk_alloc_hints get_blk_alloc_hints_on_same_pdev(chunk_num_t chunk_id) const; + private: std::unordered_map< uint32_t, std::shared_ptr< PerDevHeap > > m_per_dev_heap; @@ -54,4 +56,4 @@ class HeapChunkSelector : public homestore::ChunkSelector { void add_chunk_internal(const chunk_num_t); }; -} // namespace homeobject \ No newline at end of file +} // namespace homeobject