pending_splits.count(pgid);
}
-void OSDService::complete_split(const set<spg_t> &pgs)
+void OSDService::complete_split(spg_t pgid)
{
Mutex::Locker l(in_progress_split_lock);
- for (set<spg_t>::const_iterator i = pgs.begin();
- i != pgs.end();
- ++i) {
- dout(10) << __func__ << ": Completing split on pg " << *i << dendl;
- assert(!pending_splits.count(*i));
- assert(in_progress_splits.count(*i));
- in_progress_splits.erase(*i);
- }
+ dout(10) << __func__ << ": Completing split on pg " << pgid << dendl;
+ assert(!pending_splits.count(pgid));
+ assert(in_progress_splits.count(pgid));
+ in_progress_splits.erase(pgid);
}
void OSDService::need_heartbeat_peer_update()
(*i)->lock();
PG *pg = i->get();
osd->add_newly_split_pg(pg, &rctx);
- if (!((*i)->is_deleting())) {
- set<spg_t> to_complete;
- to_complete.insert((*i)->get_pgid());
- osd->service.complete_split(to_complete);
- }
+ osd->service.complete_split((*i)->get_pgid());
osd->pg_map_lock.put_write();
osd->dispatch_context_transaction(rctx, pg);
osd->wake_pg_waiters(*i);
return _start_split(parent, children);
}
void mark_split_in_progress(spg_t parent, const set<spg_t> &pgs);
- void complete_split(const set<spg_t> &pgs);
+ void complete_split(spg_t pgid);
void cancel_pending_splits_for_parent(spg_t parent);
void _cancel_pending_splits_for_parent(spg_t parent);
bool splitting(spg_t pgid);