++p)
if (osdmap->is_up(*p))
_add_heartbeat_peer(*p);
+ for (set<int>::iterator p = pg->probe_targets.begin();
+ p != pg->probe_targets.end();
+ ++p)
+ if (osdmap->is_up(*p))
+ _add_heartbeat_peer(*p);
pg->heartbeat_peer_lock.Unlock();
}
<< ", all is well" << dendl;
need_up_thru = false;
}
+ set_probe_targets(prior_set->probe);
}
void PG::clear_primary_state()
peer_missing_requested.clear();
}
+void PG::set_probe_targets(const set<int> &probe_set)
+{
+ Mutex::Locker l(heartbeat_peer_lock);
+ probe_targets = probe_set;
+}
+
+void PG::clear_probe_targets()
+{
+ Mutex::Locker l(heartbeat_peer_lock);
+ probe_targets.clear();
+}
+
void PG::update_heartbeat_peers()
{
assert(is_locked());
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
pg->state_clear(PG_STATE_PEERING);
+ pg->clear_probe_targets();
}
/*---------Active---------*/
/* heartbeat peers */
+ void set_probe_targets(const set<int> &probe_set);
+ void clear_probe_targets();
public:
Mutex heartbeat_peer_lock;
set<int> heartbeat_peers;
+ set<int> probe_targets;
protected:
/**