Backref tree is not specific to segments.
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
ceph_assert(
is_aligned(
key.as_seg_paddr().get_segment_off(),
- (uint64_t)sm_group.get_block_size()));
+ (uint64_t)cache.get_block_size()));
struct state_t {
paddr_t last_end;
class BtreeBackrefManager : public BackrefManager {
public:
- BtreeBackrefManager(
- SegmentManagerGroup &sm_group,
- Cache &cache)
- : sm_group(sm_group),
- cache(cache)
+ BtreeBackrefManager(Cache &cache)
+ : cache(cache)
{}
mkfs_ret mkfs(
void cache_new_backref_extent(paddr_t paddr, extent_types_t type) final;
private:
- SegmentManagerGroup &sm_group;
Cache &cache;
btree_pin_set_t<paddr_t> pin_set;
namespace crimson::os::seastore {
BackrefManagerRef create_backref_manager(
- SegmentManagerGroup &sm_group,
Cache &cache)
{
return BackrefManagerRef(
- new backref::BtreeBackrefManager(
- sm_group, cache));
+ new backref::BtreeBackrefManager(cache));
}
} // namespace crimson::os::seastore::backref
std::unique_ptr<BackrefManager>;
BackrefManagerRef create_backref_manager(
- SegmentManagerGroup &sm_group,
Cache &cache);
} // namespace crimson::os::seastore::backref
return get_extent<T>(t, offset, length, [](T &){});
}
+ seastore_off_t get_block_size() const {
+ return epm.get_block_size();
+ }
+
private:
// This is a workaround std::move_only_function not being available,
// not really worth generalizing at this time.
auto cache = std::make_unique<Cache>(*epm);
auto lba_manager = lba_manager::create_lba_manager(*cache);
auto sms = std::make_unique<SegmentManagerGroup>();
- auto backref_manager = create_backref_manager(*sms, *cache);
+ auto backref_manager = create_backref_manager(*cache);
bool cleaner_is_detailed;
AsyncCleaner::config_t cleaner_config;