From: John Spray Date: Thu, 21 Jan 2016 13:24:29 +0000 (+0000) Subject: client: don't hold client_lock around objecter init X-Git-Tag: v10.0.4~139^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=448bea4d1fa5d7ceadd71046f95b1c6141e3b218;p=ceph.git client: don't hold client_lock around objecter init Because by doing so we establish a dependency between client lock and admin socket lock. Signed-off-by: John Spray --- diff --git a/src/client/Client.cc b/src/client/Client.cc index a4a01a80b3a6..43ee69d6d4fe 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -468,15 +468,13 @@ void Client::dump_status(Formatter *f) int Client::init() { - client_lock.Lock(); - assert(!initialized); - timer.init(); - objectcacher->start(); - objecter->init(); + client_lock.Lock(); + assert(!initialized); + // ok! messenger->add_dispatcher_tail(objecter); messenger->add_dispatcher_tail(this); @@ -608,9 +606,9 @@ void Client::shutdown() assert(initialized); initialized = false; timer.shutdown(); - objecter->shutdown(); client_lock.Unlock(); + objecter->shutdown(); objecter_finisher.wait_for_empty(); objecter_finisher.stop();