From 8b35425381b0b2a574209f82c07d9f8dfb8c0c4c Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 18 Jun 2009 16:35:18 -0700 Subject: [PATCH] uclient: wait for mds sessions close on unmount --- src/client/Client.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/client/Client.cc b/src/client/Client.cc index a07d1c09a3b69..3c4ff5a20e031 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -892,6 +892,7 @@ void Client::handle_client_session(MClientSession *m) case CEPH_SESSION_CLOSE: mds_sessions.erase(from); + mount_cond.Signal(); // FIXME: kick requests (hard) so that they are redirected. or fail. break; @@ -2420,6 +2421,12 @@ int Client::unmount() mdsmap->get_inst(p->first)); } + // wait for sessions to close + while (mds_sessions.size()) { + dout(2) << "waiting for " << mds_sessions.size() << " mds sessions to close" << dendl; + mount_cond.Wait(client_lock); + } + // leave cluster client_lock.Unlock(); monclient->unmount(); -- 2.39.5