From: Samuel Just Date: Tue, 5 Aug 2014 19:57:43 +0000 (-0700) Subject: OSD: wake_pg_waiters outside of the pgmap write_lock, pg_lock X-Git-Tag: v0.85~72^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=20fd714a08f712c7d87068f9d4938e0f597c5f22;p=ceph.git OSD: wake_pg_waiters outside of the pgmap write_lock, pg_lock Signed-off-by: Samuel Just --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 08b6bcc29588..e586674f0dbd 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -2647,7 +2647,6 @@ void OSD::add_newly_split_pg(PG *pg, PG::RecoveryCtx *rctx) pg->get("PGMap"); // For pg_map pg_map[pg->info.pgid] = pg; service.pg_add_epoch(pg->info.pgid, pg->get_osdmap()->get_epoch()); - wake_pg_waiters(pg, pg->info.pgid); dout(10) << "Adding newly split pg " << *pg << dendl; vector up, acting; @@ -8301,6 +8300,7 @@ struct C_CompleteSplits : public Context { osd->dispatch_context_transaction(rctx, &**i); to_complete.insert((*i)->info.pgid); (*i)->unlock(); + osd->wake_pg_waiters(&**i, (*i)->info.pgid); to_complete.clear(); }