]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
client: hold the cct by increasing the cct nref 40028/head
authorXiubo Li <xiubli@redhat.com>
Fri, 12 Mar 2021 04:09:37 +0000 (12:09 +0800)
committerXiubo Li <xiubli@redhat.com>
Fri, 12 Mar 2021 04:11:48 +0000 (12:11 +0800)
Fixes: https://tracker.ceph.com/issues/49725
Signed-off-by: Xiubo Li <xiubli@redhat.com>
src/client/Client.cc
src/client/Client.h

index f667d2a3cdb186a92d9df6a0725bedaa4d4d708e..ab34dcef1941320cf6e0bf285bc1581add55a9fe 100644 (file)
@@ -294,7 +294,7 @@ vinodeno_t Client::map_faked_ino(ino_t ino)
 // cons/des
 
 Client::Client(Messenger *m, MonClient *mc, Objecter *objecter_)
-  : Dispatcher(m->cct),
+  : Dispatcher(m->cct->get()),
     timer(m->cct, timer_lock, false),
     messenger(m),
     monclient(mc),
@@ -302,6 +302,7 @@ Client::Client(Messenger *m, MonClient *mc, Objecter *objecter_)
     whoami(mc->get_global_id()),
     mount_state(CLIENT_UNMOUNTED, "Client::mountstate_lock"),
     initialize_state(CLIENT_NEW, "Client::initstate_lock"),
+    cct_deleter{m->cct, [](CephContext *p) {p->put();}},
     async_ino_invalidator(m->cct),
     async_dentry_invalidator(m->cct),
     interrupt_finisher(m->cct),
index 9574f090bb237a5ea61589c9e6e52068f19c39e4..5414cdb95dd621783b1a5e4f8e2ffbbd8a46315a 100644 (file)
@@ -1213,6 +1213,7 @@ private:
     MAY_READ = 4,
   };
 
+  std::unique_ptr<CephContext, std::function<void(CephContext*)>> cct_deleter;
 
   /* Flags for VXattr */
   static const unsigned VXATTR_RSTAT = 0x1;