map_bl_inc_cache.add(e, bl);
}
-int OSDService::get_deleted_pool_pg_num(int64_t pool)
-{
- std::lock_guard l(map_cache_lock);
- auto p = deleted_pool_pg_nums.find(pool);
- if (p != deleted_pool_pg_nums.end()) {
- return p->second;
- }
- dout(20) << __func__ << " " << pool << " loading" << dendl;
- ghobject_t oid = OSD::make_final_pool_info_oid(pool);
- bufferlist bl;
- int r = store->read(meta_ch, oid, 0, 0, bl);
- ceph_assert(r >= 0);
- auto blp = bl.cbegin();
- pg_pool_t pi;
- ::decode(pi, blp);
- deleted_pool_pg_nums[pool] = pi.get_pg_num();
- dout(20) << __func__ << " " << pool << " got " << pi.get_pg_num() << dendl;
- return pi.get_pg_num();
-}
-
OSDMapRef OSDService::_add_map(OSDMap *o)
{
epoch_t e = o->get_epoch();
}
encode(profile, bl);
t.write(coll_t::meta(), obj, 0, bl.length(), bl);
- service.store_deleted_pool_pg_num(j.first, j.second.get_pg_num());
} else if (unsigned new_pg_num = i.second->get_pg_num(j.first);
new_pg_num != j.second.get_pg_num()) {
dout(10) << __func__ << " recording pool " << j.first << " pg_num "
SimpleLRU<epoch_t, bufferlist> map_bl_cache;
SimpleLRU<epoch_t, bufferlist> map_bl_inc_cache;
- /// final pg_num values for recently deleted pools
- map<int64_t,int> deleted_pool_pg_nums;
-
OSDMapRef try_get_map(epoch_t e);
OSDMapRef get_map(epoch_t e) {
OSDMapRef ret(try_get_map(e));
void _add_map_inc_bl(epoch_t e, bufferlist& bl);
bool get_inc_map_bl(epoch_t e, bufferlist& bl);
- /// get last pg_num before a pool was deleted (if any)
- int get_deleted_pool_pg_num(int64_t pool);
-
- void store_deleted_pool_pg_num(int64_t pool, int pg_num) {
- std::lock_guard l(map_cache_lock);
- deleted_pool_pg_nums[pool] = pg_num;
- }
-
/// identify split child pgids over a osdmap interval
void identify_splits_and_merges(
OSDMapRef old_map,