From 178e86f86e44ca922e8335cf966a8ebd80692bab Mon Sep 17 00:00:00 2001 From: Xiubo Li Date: Fri, 12 Mar 2021 12:09:37 +0800 Subject: [PATCH] client: hold the cct by increasing the cct nref Fixes: https://tracker.ceph.com/issues/49725 Signed-off-by: Xiubo Li --- src/client/Client.cc | 3 ++- src/client/Client.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/client/Client.cc b/src/client/Client.cc index f667d2a3cdb1..ab34dcef1941 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -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), diff --git a/src/client/Client.h b/src/client/Client.h index 9574f090bb23..5414cdb95dd6 100644 --- a/src/client/Client.h +++ b/src/client/Client.h @@ -1213,6 +1213,7 @@ private: MAY_READ = 4, }; + std::unique_ptr> cct_deleter; /* Flags for VXattr */ static const unsigned VXATTR_RSTAT = 0x1; -- 2.47.3