if (r < 0)
goto out;
}
+ if (!store->exists(service.meta_ch, OSD::make_purged_snaps_oid())) {
+ dout(10) << "init creating/touching purged_snaps object" << dendl;
+ ObjectStore::Transaction t;
+ t.touch(coll_t::meta(), OSD::make_purged_snaps_oid());
+ r = store->queue_transaction(service.meta_ch, std::move(t));
+ if (r < 0)
+ goto out;
+ }
class_handler = new ClassHandler(cct);
cls_initialize(class_handler);
goto out;
}
SnapMapper::record_purged_snaps(cct, store, service.meta_ch,
- make_snapmapper_oid(), &t,
+ make_purged_snaps_oid(), &t,
m->purged_snaps);
superblock.purged_snaps_last = m->last;
write_superblock(t);
dout(10) << __func__ << dendl;
ceph_assert(ceph_mutex_is_locked(osd_lock));
SnapMapper::Scrubber s(cct, store, service.meta_ch,
- make_snapmapper_oid());
+ make_snapmapper_oid(),
+ make_purged_snaps_oid());
clog->debug() << "purged_snaps scrub starts";
osd_lock.unlock();
s.run();
// record new purged_snaps
if (superblock.purged_snaps_last == start - 1) {
SnapMapper::record_purged_snaps(cct, store, service.meta_ch,
- make_snapmapper_oid(), &t,
+ make_purged_snaps_oid(), &t,
purged_snaps);
superblock.purged_snaps_last = last;
} else {
_init();
- psit = store->get_omap_iterator(ch, hoid);
+ psit = store->get_omap_iterator(ch, purged_snaps_hoid);
psit->upper_bound(PURGED_SNAP_PREFIX);
_parse_p();
- mapit = store->get_omap_iterator(ch, hoid);
+ mapit = store->get_omap_iterator(ch, mapping_hoid);
mapit->upper_bound(MAPPING_PREFIX);
while (_parse_m()) {
CephContext *cct;
ObjectStore *store;
ObjectStore::CollectionHandle ch;
- ghobject_t hoid;
+ ghobject_t mapping_hoid;
+ ghobject_t purged_snaps_hoid;
ObjectMap::ObjectMapIterator psit;
int64_t pool;
CephContext *cct,
ObjectStore *store,
ObjectStore::CollectionHandle& ch,
- ghobject_t hoid)
+ ghobject_t mapping_hoid,
+ ghobject_t purged_snaps_hoid)
: cct(cct),
store(store),
ch(ch),
- hoid(hoid) {}
-
+ mapping_hoid(mapping_hoid),
+ purged_snaps_hoid(purged_snaps_hoid) {}
void _init();
void run();
CephContext *cct,
ObjectStore *store,
ObjectStore::CollectionHandle& ch,
- ghobject_t hoid);
+ ghobject_t mapper_hoid,
+ ghobject_t purged_snaps_hoid);
private:
static int _lookup_purged_snap(