From 10b6d61cd51c65c1dfa6420a9617c6b77c70e0d9 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 12 Dec 2017 18:50:50 -0600 Subject: [PATCH] osd: always call complete_split() We need to complete the split regardless of whether the pg will get removed after. Signed-off-by: Sage Weil --- src/osd/OSD.cc | 20 ++++++-------------- src/osd/OSD.h | 2 +- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 16d7a7ad05c..9b7d2644385 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -467,17 +467,13 @@ bool OSDService::splitting(spg_t pgid) pending_splits.count(pgid); } -void OSDService::complete_split(const set &pgs) +void OSDService::complete_split(spg_t pgid) { Mutex::Locker l(in_progress_split_lock); - for (set::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() @@ -7658,11 +7654,7 @@ struct C_CompleteSplits : public Context { (*i)->lock(); PG *pg = i->get(); osd->add_newly_split_pg(pg, &rctx); - if (!((*i)->is_deleting())) { - set 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); diff --git a/src/osd/OSD.h b/src/osd/OSD.h index e4517873e89..9be91933884 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -929,7 +929,7 @@ public: return _start_split(parent, children); } void mark_split_in_progress(spg_t parent, const set &pgs); - void complete_split(const set &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); -- 2.39.5