#ifndef WITH_CRIMSON
-bool SnapMapper::Scrubber::_parse_p()
+bool SnapMapper::Scrubber::_parse_p(ObjectMap::ObjectMapIterator& psit)
{
if (!psit->valid()) {
pool = -1;
return true;
}
-bool SnapMapper::Scrubber::_parse_m()
+bool SnapMapper::Scrubber::_parse_m(ObjectMap::ObjectMapIterator& mapit)
{
if (!mapit->valid()) {
return false;
{
dout(10) << __func__ << dendl;
+ ObjectMap::ObjectMapIterator psit;
+ ObjectMap::ObjectMapIterator mapit;
+
psit = store->get_omap_iterator(ch, purged_snaps_hoid);
psit->upper_bound(PURGED_SNAP_PREFIX);
- _parse_p();
+ _parse_p(psit);
mapit = store->get_omap_iterator(ch, mapping_hoid);
mapit->upper_bound(MAPPING_PREFIX);
- while (_parse_m()) {
+ while (_parse_m(mapit)) {
// advance to next purged_snaps range?
while (pool >= 0 &&
(mapping.hoid.pool > pool ||
(mapping.hoid.pool == pool && mapping.snap >= end))) {
- _parse_p();
+ _parse_p(psit);
}
if (pool < 0) {
dout(10) << __func__ << " passed final purged_snaps interval, rest ok"
ghobject_t mapping_hoid;
ghobject_t purged_snaps_hoid;
- ObjectMap::ObjectMapIterator psit;
int64_t pool;
snapid_t begin, end;
- bool _parse_p(); ///< advance the purged_snaps pointer
+ bool _parse_p(ObjectMap::ObjectMapIterator& psit); ///< advance the purged_snaps pointer
- ObjectMap::ObjectMapIterator mapit;
Mapping mapping;
shard_id_t shard;
- bool _parse_m(); ///< advance the (object) mapper pointer
+ bool _parse_m(ObjectMap::ObjectMapIterator& mapit); ///< advance the (object) mapper pointer
std::vector<std::tuple<int64_t, snapid_t, uint32_t, shard_id_t>> stray;