assert(cct->_conf->osd_find_best_info_ignore_history_les ||
info.last_epoch_started >= info.history.last_epoch_started);
- peer_missing[from].swap(omissing);
+ peer_missing[from].claim(omissing);
}
void PG::proc_replica_log(
dout(20) << " after missing " << i->first << " need " << i->second.need
<< " have " << i->second.have << dendl;
}
- peer_missing[from].swap(omissing);
+ peer_missing[from].claim(omissing);
}
bool PG::proc_replica_info(
{
dout(10) << "Noting missing from osd." << logevt.from << dendl;
PG *pg = context< RecoveryMachine >().pg;
- pg->peer_missing[logevt.from].swap(logevt.msg->missing);
+ pg->peer_missing[logevt.from].claim(logevt.msg->missing);
pg->peer_info[logevt.from] = logevt.msg->info;
return discard_event();
}
return item.have;
}
- void swap(pg_missing_set& o) {
- for (auto &&i: missing)
- tracker.changed(i.first);
+ void claim(pg_missing_set& o) {
+ static_assert(!TrackChanges, "Can't use claim with TrackChanges");
missing.swap(o.missing);
rmissing.swap(o.rmissing);
- for (auto &&i: missing)
- tracker.changed(i.first);
}
/*
EXPECT_TRUE(missing.have_missing());
}
-TEST(pg_missing_t, swap)
+TEST(pg_missing_t, claim)
{
hobject_t oid(object_t("objname"), "key", 123, 456, 0, "");
pg_missing_t missing;
pg_missing_t other;
EXPECT_FALSE(other.have_missing());
- other.swap(missing);
- EXPECT_FALSE(missing.have_missing());
+ other.claim(missing);
EXPECT_TRUE(other.have_missing());
}