]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: handle client requests while mds is stopping
authorYan, Zheng <zyan@redhat.com>
Mon, 2 Apr 2018 03:23:08 +0000 (11:23 +0800)
committerYan, Zheng <zyan@redhat.com>
Mon, 2 Apr 2018 03:27:54 +0000 (11:27 +0800)
stopping mds may require several minutes. It's not good to block
client requests so long. mds should get less and less of client
requesets as subtrees get exported.

Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
src/mds/Server.cc

index d2c29d8ebd08a3dec6183e7eadc6084f90dd125d..61fef0229ea36c7903b81b8ffc4f499784cc39f2 100644 (file)
@@ -239,8 +239,7 @@ void Server::dispatch(Message *m)
 
     bool wait_for_active = true;
     if (mds->is_stopping()) {
-      if (m->get_source().is_mds())
-       wait_for_active = false;
+      wait_for_active = false;
     } else if (mds->is_clientreplay()) {
       if (req->is_queued_for_replay()) {
        wait_for_active = false;
@@ -336,7 +335,8 @@ void Server::handle_client_session(MClientSession *m)
     if (session->is_opening() ||
        session->is_open() ||
        session->is_stale() ||
-       session->is_killing()) {
+       session->is_killing() ||
+       terminating_sessions) {
       dout(10) << "currently open|opening|stale|killing, dropping this req" << dendl;
       // set client metadata for session opened by prepare_force_open_sessions
       if (!m->client_meta.empty())