]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
client: hold the cct by increasing the cct nref 40251/head
authorXiubo Li <xiubli@redhat.com>
Fri, 12 Mar 2021 04:09:37 +0000 (12:09 +0800)
committersinguliere <singuliere@autistici.org>
Fri, 19 Mar 2021 18:12:47 +0000 (19:12 +0100)
Fixes: https://tracker.ceph.com/issues/49725
Signed-off-by: Xiubo Li <xiubli@redhat.com>
(cherry picked from commit 178e86f86e44ca922e8335cf966a8ebd80692bab)

src/client/Client.cc
src/client/Client.h

index 34e071fd268ac0c80d9c49354f95e1473c8eb0b1..ef5c98240648ba22e18ac9e95ce9df1cceceaab2 100644 (file)
@@ -288,7 +288,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),
@@ -296,6 +296,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 84e49e4f372706e2851bee029c7387765996cccd..6de1f6e7bc945a128c6ac48ea2aa074f09136b92 100644 (file)
@@ -1181,6 +1181,7 @@ private:
     MAY_READ = 4,
   };
 
+  std::unique_ptr<CephContext, std::function<void(CephContext*)>> cct_deleter;
 
   /* Flags for VXattr */
   static const unsigned VXATTR_RSTAT = 0x1;