From: Xiubo Li Date: Fri, 12 Mar 2021 04:09:37 +0000 (+0800) Subject: client: hold the cct by increasing the cct nref X-Git-Tag: v17.1.0~2593^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=178e86f86e44ca922e8335cf966a8ebd80692bab;p=ceph.git client: hold the cct by increasing the cct nref Fixes: https://tracker.ceph.com/issues/49725 Signed-off-by: Xiubo Li --- diff --git a/src/client/Client.cc b/src/client/Client.cc index f667d2a3cdb..ab34dcef194 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 9574f090bb2..5414cdb95dd 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;