command_wq(this, g_conf->osd_command_thread_timeout, &command_tp),
recovery_ops_active(0),
recovery_wq(this, g_conf->osd_recovery_thread_timeout, &recovery_tp),
- remove_list_lock("OSD::remove_list_lock"),
replay_queue_lock("OSD::replay_queue_lock"),
snap_trim_wq(this, g_conf->osd_snap_trim_thread_timeout, &disk_tp),
scrub_wq(this, g_conf->osd_scrub_thread_timeout, &disk_tp),
do_mon_report();
}
- // remove stray pgs?
- remove_list_lock.Lock();
- for (map<epoch_t, map<int, vector<pg_t> > >::iterator p = remove_list.begin();
- p != remove_list.end();
- p++)
- for (map<int, vector<pg_t> >::iterator q = p->second.begin();
- q != p->second.end();
- q++) {
- if (osdmap->is_up(q->first)) {
- MOSDPGRemove *m = new MOSDPGRemove(p->first, q->second);
- cluster_messenger->send_message(m, osdmap->get_cluster_inst(q->first));
- }
- }
- remove_list.clear();
- remove_list_lock.Unlock();
-
map_lock.put_read();
timer.add_event_after(1.0, new C_Tick(this));
op_wq.queue(pg);
}
-void OSDService::queue_for_removal(epoch_t epoch, int osdnum, pg_t pgid) {
- osd->remove_list_lock.Lock();
- osd->remove_list[epoch][osdnum].push_back(pgid);
- osd->remove_list_lock.Unlock();
-}
-
void OSD::process_peering_event(PG *pg)
{
bool need_up_thru = false;
bool queue_for_scrub(PG *pg) {
return scrub_wq.queue(pg);
}
- void queue_for_removal(epoch_t epoch, int osd, pg_t pgid);
// osd map cache (past osd maps)
Mutex map_cache_lock;
void do_recovery(PG *pg);
bool _recover_now();
- Mutex remove_list_lock;
- map<epoch_t, map<int, vector<pg_t> > > remove_list;
-
// replay / delayed pg activation
Mutex replay_queue_lock;
list< pair<pg_t, utime_t > > replay_queue;
p++) {
if (get_osdmap()->is_up(*p)) {
dout(10) << "sending PGRemove to osd." << *p << dendl;
- osd->queue_for_removal(get_osdmap()->get_epoch(), *p, info.pgid);
+ vector<pg_t> to_remove;
+ to_remove.push_back(info.pgid);
+ MOSDPGRemove *m = new MOSDPGRemove(
+ get_osdmap()->get_epoch(),
+ to_remove);
+ osd->cluster_messenger->send_message(
+ m, get_osdmap()->get_cluster_inst(*p));
stray_purged.insert(*p);
} else {
dout(10) << "not sending PGRemove to down osd." << *p << dendl;