dirty_big_info = true;
}
-void PGLog::merge_log(pg_info_t &oinfo, pg_log_t &olog, pg_shard_t fromosd,
+void PGLog::merge_log(pg_info_t &oinfo, pg_log_t&& olog, pg_shard_t fromosd,
pg_info_t &info, LogEntryHandler *rollbacker,
bool &dirty_info, bool &dirty_big_info)
{
// splice into our log.
log.log.splice(log.log.begin(),
- olog.log, from, to);
+ std::move(olog.log), from, to);
info.log_tail = log.tail = olog.tail;
changed = true;
bool &dirty_big_info);
void merge_log(pg_info_t &oinfo,
- pg_log_t &olog,
+ pg_log_t&& olog,
pg_shard_t from,
pg_info_t &info, LogEntryHandler *rollbacker,
bool &dirty_info, bool &dirty_big_info);
}
void PeeringState::merge_log(
- ObjectStore::Transaction& t, pg_info_t &oinfo, pg_log_t &olog,
+ ObjectStore::Transaction& t, pg_info_t &oinfo, pg_log_t&& olog,
pg_shard_t from)
{
PGLog::LogEntryHandlerRef rollbacker{pl->get_log_handler(t)};
pg_log.merge_log(
- oinfo, olog, from, info, rollbacker.get(), dirty_info, dirty_big_info);
+ oinfo, std::move(olog), from, info, rollbacker.get(),
+ dirty_info, dirty_big_info);
}
void PeeringState::rewind_divergent_log(
void PeeringState::proc_master_log(
ObjectStore::Transaction& t, pg_info_t &oinfo,
- pg_log_t &olog, pg_missing_t& omissing, pg_shard_t from)
+ pg_log_t&& olog, pg_missing_t&& omissing, pg_shard_t from)
{
psdout(10) << "proc_master_log for osd." << from << ": "
<< olog << " " << omissing << dendl;
// make any adjustments to their missing map; we are taking their
// log to be authoritative (i.e., their entries are by definitely
// non-divergent).
- merge_log(t, oinfo, olog, from);
+ merge_log(t, oinfo, std::move(olog), from);
peer_info[from] = oinfo;
psdout(10) << " peer osd." << from << " now " << oinfo
<< " " << omissing << dendl;
ceph_assert(cct->_conf->osd_find_best_info_ignore_history_les ||
info.last_epoch_started >= info.history.last_epoch_started);
- peer_missing[from].claim(omissing);
+ peer_missing[from].claim(std::move(omissing));
}
void PeeringState::proc_replica_log(
pg_info_t &oinfo,
const pg_log_t &olog,
- pg_missing_t& omissing,
+ pg_missing_t&& omissing,
pg_shard_t from)
{
psdout(10) << "proc_replica_log for osd." << from << ": "
<< " need " << i->second.need
<< " have " << i->second.have << dendl;
}
- peer_missing[from].claim(omissing);
+ peer_missing[from].claim(std::move(omissing));
}
void PeeringState::fulfill_info(
psdout(10) << "searching osd." << logevt.from
<< " log for unfound items" << dendl;
ps->proc_replica_log(
- logevt.msg->info, logevt.msg->log, logevt.msg->missing, logevt.from);
+ logevt.msg->info, logevt.msg->log, std::move(logevt.msg->missing), logevt.from);
bool got_missing = ps->search_for_missing(
ps->peer_info[logevt.from],
ps->peer_missing[logevt.from],
DECLARE_LOCALS;
psdout(10) << "received log from " << logevt.from << dendl;
ObjectStore::Transaction &t = context<PeeringMachine>().get_cur_transaction();
- ps->merge_log(t, logevt.msg->info, logevt.msg->log, logevt.from);
+ ps->merge_log(t, logevt.msg->info, std::move(logevt.msg->log), logevt.from);
ceph_assert(ps->pg_log.get_head() == ps->info.last_update);
if (logevt.msg->lease) {
ps->proc_lease(*logevt.msg->lease);
ps->pg_log.reset_backfill();
} else {
- ps->merge_log(t, msg->info, msg->log, logevt.from);
+ ps->merge_log(t, msg->info, std::move(msg->log), logevt.from);
}
if (logevt.msg->lease) {
ps->proc_lease(*logevt.msg->lease);
if (msg) {
psdout(10) << "processing master log" << dendl;
ps->proc_master_log(context<PeeringMachine>().get_cur_transaction(),
- msg->info, msg->log, msg->missing,
+ msg->info, std::move(msg->log), std::move(msg->missing),
auth_log_shard);
}
ps->start_flush(context< PeeringMachine >().get_cur_transaction());
DECLARE_LOCALS;
peer_missing_requested.erase(logevt.from);
- ps->proc_replica_log(logevt.msg->info, logevt.msg->log, logevt.msg->missing, logevt.from);
+ ps->proc_replica_log(logevt.msg->info,
+ logevt.msg->log,
+ std::move(logevt.msg->missing),
+ logevt.from);
if (peer_missing_requested.empty()) {
if (ps->need_up_thru) {
{
DECLARE_LOCALS;
psdout(10) << "Noting missing from osd." << logevt.from << dendl;
- ps->peer_missing[logevt.from].claim(logevt.msg->missing);
+ ps->peer_missing[logevt.from].claim(std::move(logevt.msg->missing));
ps->peer_info[logevt.from] = logevt.msg->info;
return discard_event();
}
void rewind_divergent_log(ObjectStore::Transaction& t, eversion_t newhead);
void merge_log(
ObjectStore::Transaction& t, pg_info_t &oinfo,
- pg_log_t &olog, pg_shard_t from);
+ pg_log_t&& olog, pg_shard_t from);
void proc_primary_info(ObjectStore::Transaction &t, const pg_info_t &info);
void proc_master_log(ObjectStore::Transaction& t, pg_info_t &oinfo,
- pg_log_t &olog, pg_missing_t& omissing,
+ pg_log_t&& olog, pg_missing_t&& omissing,
pg_shard_t from);
void proc_replica_log(pg_info_t &oinfo, const pg_log_t &olog,
- pg_missing_t& omissing, pg_shard_t from);
+ pg_missing_t&& omissing, pg_shard_t from);
void calc_min_last_complete_ondisk() {
eversion_t min = last_complete_ondisk;
return it->second.need;
}
- void claim(pg_missing_set& o) {
+ void claim(pg_missing_set&& o) {
static_assert(!TrackChanges, "Can't use claim with TrackChanges");
- missing.swap(o.missing);
- rmissing.swap(o.rmissing);
+ missing = std::move(o.missing);
+ rmissing = std::move(o.rmissing);
}
/*
bool dirty_info = false;
bool dirty_big_info = false;
merge_log(
- oinfo, olog, pg_shard_t(1, shard_id_t(0)), info,
+ oinfo, std::move(olog), pg_shard_t(1, shard_id_t(0)), info,
&h, dirty_info, dirty_big_info);
ASSERT_EQ(info.last_update, oinfo.last_update);
EXPECT_FALSE(dirty_big_info);
TestHandler h(remove_snap);
- merge_log(oinfo, olog, fromosd, info, &h,
+ merge_log(oinfo, std::move(olog), fromosd, info, &h,
dirty_info, dirty_big_info);
EXPECT_FALSE(missing.have_missing());
EXPECT_FALSE(dirty_big_info);
TestHandler h(remove_snap);
- merge_log(oinfo, olog, fromosd, info, &h,
+ merge_log(oinfo, std::move(olog), fromosd, info, &h,
dirty_info, dirty_big_info);
EXPECT_FALSE(missing.have_missing());
EXPECT_FALSE(dirty_big_info);
TestHandler h(remove_snap);
- merge_log(oinfo, olog, fromosd, info, &h,
+ merge_log(oinfo, std::move(olog), fromosd, info, &h,
dirty_info, dirty_big_info);
EXPECT_FALSE(missing.have_missing());
EXPECT_FALSE(dirty_big_info);
TestHandler h(remove_snap);
- merge_log(oinfo, olog, fromosd, info, &h,
+ merge_log(oinfo, std::move(olog), fromosd, info, &h,
dirty_info, dirty_big_info);
/* When the divergent entry is a DELETE and the authoritative
TestHandler h(remove_snap);
missing.may_include_deletes = false;
- merge_log(oinfo, olog, fromosd, info, &h,
+ merge_log(oinfo, std::move(olog), fromosd, info, &h,
dirty_info, dirty_big_info);
/* When the divergent entry is a DELETE and the authoritative
TestHandler h(remove_snap);
missing.may_include_deletes = false;
- merge_log(oinfo, olog, fromosd, info, &h,
+ merge_log(oinfo, std::move(olog), fromosd, info, &h,
dirty_info, dirty_big_info);
EXPECT_FALSE(missing.have_missing());
pg_missing_t other;
EXPECT_FALSE(other.have_missing());
- other.claim(missing);
+ other.claim(std::move(missing));
EXPECT_TRUE(other.have_missing());
}