From: Jason Dillaman Date: Thu, 11 Jun 2020 20:26:55 +0000 (-0400) Subject: librbd: replaced ImageCtx::get_thread_pool_instance X-Git-Tag: v16.1.0~2061^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ff2dac02e85da0500a485b2f509fa3b29c737651;p=ceph.git librbd: replaced ImageCtx::get_thread_pool_instance Callers have never needed the actual ThreadPool which is being removed. Refactored into ImageCtx::get_work_queue method. Signed-off-by: Jason Dillaman --- diff --git a/src/librbd/ImageCtx.cc b/src/librbd/ImageCtx.cc index f8564005d889..07e96a053c90 100644 --- a/src/librbd/ImageCtx.cc +++ b/src/librbd/ImageCtx.cc @@ -96,6 +96,15 @@ boost::asio::io_context& get_asio_engine_io_context(CephContext* cct) { return asio_engine_singleton->get_io_context(); } +void get_thread_pool_instance(CephContext *cct, ThreadPool **thread_pool, + ContextWQ **op_work_queue) { + auto thread_pool_singleton = + &cct->lookup_or_create_singleton_object( + "librbd::thread_pool", false, cct); + *thread_pool = thread_pool_singleton; + *op_work_queue = thread_pool_singleton->op_work_queue; +} + } // anonymous namespace const string ImageCtx::METADATA_CONF_PREFIX = "conf_"; @@ -925,14 +934,11 @@ boost::asio::io_context& get_asio_engine_io_context(CephContext* cct) { "librbd::AsioEngine", false, cct); } - void ImageCtx::get_thread_pool_instance(CephContext *cct, - ThreadPool **thread_pool, - ContextWQ **op_work_queue) { - auto thread_pool_singleton = - &cct->lookup_or_create_singleton_object( - "librbd::thread_pool", false, cct); - *thread_pool = thread_pool_singleton; - *op_work_queue = thread_pool_singleton->op_work_queue; + void ImageCtx::get_work_queue(CephContext *cct, + ContextWQ **op_work_queue) { + + ThreadPool* thread_pool; + get_thread_pool_instance(cct, &thread_pool, op_work_queue); } void ImageCtx::get_timer_instance(CephContext *cct, SafeTimer **timer, diff --git a/src/librbd/ImageCtx.h b/src/librbd/ImageCtx.h index d25f80464ac6..45b80423b93e 100644 --- a/src/librbd/ImageCtx.h +++ b/src/librbd/ImageCtx.h @@ -347,9 +347,7 @@ namespace librbd { void set_journal_policy(journal::Policy *policy); static AsioEngine* get_asio_engine(CephContext* cct); - static void get_thread_pool_instance(CephContext *cct, - ThreadPool **thread_pool, - ContextWQ **op_work_queue); + static void get_work_queue(CephContext *cct, ContextWQ **op_work_queue); static void get_timer_instance(CephContext *cct, SafeTimer **timer, ceph::mutex **timer_lock); }; diff --git a/src/librbd/ImageState.cc b/src/librbd/ImageState.cc index 889a36609dac..d1d73e80b0be 100644 --- a/src/librbd/ImageState.cc +++ b/src/librbd/ImageState.cc @@ -236,8 +236,7 @@ public: : m_cct(cct), m_lock(ceph::make_mutex(util::unique_lock_name( "librbd::QuiesceWatchers::m_lock", this))) { - ThreadPool *thread_pool; - ImageCtx::get_thread_pool_instance(m_cct, &thread_pool, &m_work_queue); + ImageCtx::get_work_queue(m_cct, &m_work_queue); } ~QuiesceWatchers() { diff --git a/src/librbd/Journal.cc b/src/librbd/Journal.cc index 143ca21bc9cc..3910b1873575 100644 --- a/src/librbd/Journal.cc +++ b/src/librbd/Journal.cc @@ -373,9 +373,8 @@ int Journal::create(librados::IoCtx &io_ctx, const std::string &image_id, CephContext *cct = reinterpret_cast(io_ctx.cct()); ldout(cct, 5) << __func__ << ": image=" << image_id << dendl; - ThreadPool *thread_pool; ContextWQ *op_work_queue; - ImageCtx::get_thread_pool_instance(cct, &thread_pool, &op_work_queue); + ImageCtx::get_work_queue(cct, &op_work_queue); C_SaferCond cond; journal::TagData tag_data(LOCAL_MIRROR_UUID); @@ -392,9 +391,8 @@ int Journal::remove(librados::IoCtx &io_ctx, const std::string &image_id) { CephContext *cct = reinterpret_cast(io_ctx.cct()); ldout(cct, 5) << __func__ << ": image=" << image_id << dendl; - ThreadPool *thread_pool; ContextWQ *op_work_queue; - ImageCtx::get_thread_pool_instance(cct, &thread_pool, &op_work_queue); + ImageCtx::get_work_queue(cct, &op_work_queue); C_SaferCond cond; journal::RemoveRequest *req = journal::RemoveRequest::create( @@ -409,9 +407,8 @@ int Journal::reset(librados::IoCtx &io_ctx, const std::string &image_id) { CephContext *cct = reinterpret_cast(io_ctx.cct()); ldout(cct, 5) << __func__ << ": image=" << image_id << dendl; - ThreadPool *thread_pool; ContextWQ *op_work_queue; - ImageCtx::get_thread_pool_instance(cct, &thread_pool, &op_work_queue); + ImageCtx::get_work_queue(cct, &op_work_queue); C_SaferCond cond; auto req = journal::ResetRequest::create(io_ctx, image_id, IMAGE_CLIENT_ID, diff --git a/src/librbd/api/Image.cc b/src/librbd/api/Image.cc index 6b95ac696bcb..977a4894eaa3 100644 --- a/src/librbd/api/Image.cc +++ b/src/librbd/api/Image.cc @@ -674,9 +674,8 @@ int Image::deep_copy(I *src, I *dest, bool flatten, snap_id_end = src->snap_id; } - ThreadPool *thread_pool; ContextWQ *op_work_queue; - ImageCtx::get_thread_pool_instance(cct, &thread_pool, &op_work_queue); + ImageCtx::get_work_queue(cct, &op_work_queue); C_SaferCond cond; SnapSeqs snap_seqs; @@ -825,9 +824,8 @@ int Image::remove(IoCtx& io_ctx, const std::string &image_name, // fall-through if trash isn't supported } - ThreadPool *thread_pool; ContextWQ *op_work_queue; - ImageCtx::get_thread_pool_instance(cct, &thread_pool, &op_work_queue); + ImageCtx::get_work_queue(cct, &op_work_queue); // might be a V1 image format that cannot be moved to the trash // and would not have been listed in the V2 directory -- or the OSDs diff --git a/src/librbd/api/Migration.cc b/src/librbd/api/Migration.cc index dce8c2a280d5..e097bad4a927 100644 --- a/src/librbd/api/Migration.cc +++ b/src/librbd/api/Migration.cc @@ -835,9 +835,8 @@ int Migration::abort() { ceph_assert(dst_image_ctx->ignore_migrating); - ThreadPool *thread_pool; ContextWQ *op_work_queue; - ImageCtx::get_thread_pool_instance(m_cct, &thread_pool, &op_work_queue); + ImageCtx::get_work_queue(m_cct, &op_work_queue); C_SaferCond on_remove; auto req = librbd::image::RemoveRequest<>::create( m_dst_io_ctx, dst_image_ctx, false, false, *m_prog_ctx, op_work_queue, @@ -1219,9 +1218,8 @@ int Migration::create_dst_image() { } } - ThreadPool *thread_pool; ContextWQ *op_work_queue; - ImageCtx::get_thread_pool_instance(m_cct, &thread_pool, &op_work_queue); + ImageCtx::get_work_queue(m_cct, &op_work_queue); ConfigProxy config{m_cct->_conf}; api::Config::apply_pool_overrides(m_dst_io_ctx, &config); @@ -1761,9 +1759,8 @@ int Migration::remove_src_image() { ceph_assert(m_src_image_ctx->ignore_migrating); - ThreadPool *thread_pool; ContextWQ *op_work_queue; - ImageCtx::get_thread_pool_instance(m_cct, &thread_pool, &op_work_queue); + ImageCtx::get_work_queue(m_cct, &op_work_queue); C_SaferCond on_remove; auto req = librbd::image::RemoveRequest::create( m_src_io_ctx, m_src_image_ctx, false, true, *m_prog_ctx, op_work_queue, diff --git a/src/librbd/api/Mirror.cc b/src/librbd/api/Mirror.cc index 2855ae329889..ec125d2c4994 100644 --- a/src/librbd/api/Mirror.cc +++ b/src/librbd/api/Mirror.cc @@ -1940,9 +1940,8 @@ int Mirror::image_info_list( break; } - ThreadPool *thread_pool; ContextWQ *op_work_queue; - ImageCtx::get_thread_pool_instance(cct, &thread_pool, &op_work_queue); + ImageCtx::get_work_queue(cct, &op_work_queue); for (auto &it : images) { auto &image_id = it.first; diff --git a/src/librbd/api/Pool.cc b/src/librbd/api/Pool.cc index 708f797ec698..9a2ef379ff97 100644 --- a/src/librbd/api/Pool.cc +++ b/src/librbd/api/Pool.cc @@ -251,9 +251,8 @@ int Pool::init(librados::IoCtx& io_ctx, bool force) { return 0; } - ThreadPool *thread_pool; ContextWQ *op_work_queue; - ImageCtx::get_thread_pool_instance(cct, &thread_pool, &op_work_queue); + ImageCtx::get_work_queue(cct, &op_work_queue); C_SaferCond ctx; auto req = image::ValidatePoolRequest::create(io_ctx, op_work_queue, &ctx); diff --git a/src/librbd/api/Trash.cc b/src/librbd/api/Trash.cc index df1277b5f82a..a5ba23306e92 100644 --- a/src/librbd/api/Trash.cc +++ b/src/librbd/api/Trash.cc @@ -90,9 +90,8 @@ int enable_mirroring(IoCtx &io_ctx, const std::string &image_id) { ldout(cct, 10) << dendl; - ThreadPool *thread_pool; ContextWQ *op_work_queue; - ImageCtx::get_thread_pool_instance(cct, &thread_pool, &op_work_queue); + ImageCtx::get_work_queue(cct, &op_work_queue); C_SaferCond ctx; auto req = mirror::EnableRequest::create( io_ctx, image_id, cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, "", false, @@ -535,9 +534,8 @@ int Trash::remove(IoCtx &io_ctx, const std::string &image_id, bool force, return -EBUSY; } - ThreadPool *thread_pool; ContextWQ *op_work_queue; - ImageCtx::get_thread_pool_instance(cct, &thread_pool, &op_work_queue); + ImageCtx::get_work_queue(cct, &op_work_queue); C_SaferCond cond; auto req = librbd::trash::RemoveRequest::create( diff --git a/src/librbd/internal.cc b/src/librbd/internal.cc index e37be4784728..31edcc57b600 100644 --- a/src/librbd/internal.cc +++ b/src/librbd/internal.cc @@ -684,9 +684,8 @@ int validate_pool(IoCtx &io_ctx, CephContext *cct) { lderr(cct) << "Forced V1 image creation. " << dendl; r = create_v1(io_ctx, image_name.c_str(), size, order); } else { - ThreadPool *thread_pool; ContextWQ *op_work_queue; - ImageCtx::get_thread_pool_instance(cct, &thread_pool, &op_work_queue); + ImageCtx::get_work_queue(cct, &op_work_queue); ConfigProxy config{cct->_conf}; api::Config<>::apply_pool_overrides(io_ctx, &config); @@ -790,9 +789,8 @@ int validate_pool(IoCtx &io_ctx, CephContext *cct) { ConfigProxy config{reinterpret_cast(c_ioctx.cct())->_conf}; api::Config<>::apply_pool_overrides(c_ioctx, &config); - ThreadPool *thread_pool; ContextWQ *op_work_queue; - ImageCtx::get_thread_pool_instance(cct, &thread_pool, &op_work_queue); + ImageCtx::get_work_queue(cct, &op_work_queue); C_SaferCond cond; auto *req = image::CloneRequest<>::create( diff --git a/src/test/librbd/deep_copy/test_mock_ImageCopyRequest.cc b/src/test/librbd/deep_copy/test_mock_ImageCopyRequest.cc index 4ee6320f3e5c..a7d68a624e2d 100644 --- a/src/test/librbd/deep_copy/test_mock_ImageCopyRequest.cc +++ b/src/test/librbd/deep_copy/test_mock_ImageCopyRequest.cc @@ -174,7 +174,6 @@ public: librbd::ImageCtx *m_src_image_ctx; librbd::ImageCtx *m_dst_image_ctx; - ThreadPool *m_thread_pool; ContextWQ *m_work_queue; librbd::SnapSeqs m_snap_seqs; SnapMap m_snap_map; @@ -189,8 +188,7 @@ public: ASSERT_EQ(0, create_image_pp(rbd, m_ioctx, dst_image_name, m_image_size)); ASSERT_EQ(0, open_image(dst_image_name, &m_dst_image_ctx)); - librbd::ImageCtx::get_thread_pool_instance(m_src_image_ctx->cct, - &m_thread_pool, &m_work_queue); + librbd::ImageCtx::get_work_queue(m_src_image_ctx->cct, &m_work_queue); } void expect_get_image_size(librbd::MockTestImageCtx &mock_image_ctx, diff --git a/src/test/librbd/deep_copy/test_mock_MetadataCopyRequest.cc b/src/test/librbd/deep_copy/test_mock_MetadataCopyRequest.cc index 7018f58ce139..8d6fcd3ad8d3 100644 --- a/src/test/librbd/deep_copy/test_mock_MetadataCopyRequest.cc +++ b/src/test/librbd/deep_copy/test_mock_MetadataCopyRequest.cc @@ -79,7 +79,6 @@ public: librbd::ImageCtx *m_src_image_ctx; librbd::ImageCtx *m_dst_image_ctx; - ThreadPool *m_thread_pool; ContextWQ *m_work_queue; void SetUp() override { @@ -92,8 +91,7 @@ public: ASSERT_EQ(0, create_image_pp(rbd, m_ioctx, dst_image_name, m_image_size)); ASSERT_EQ(0, open_image(dst_image_name, &m_dst_image_ctx)); - librbd::ImageCtx::get_thread_pool_instance(m_src_image_ctx->cct, - &m_thread_pool, &m_work_queue); + librbd::ImageCtx::get_work_queue(m_src_image_ctx->cct, &m_work_queue); } void expect_get_metadata(MockGetMetadataRequest& mock_request, diff --git a/src/test/librbd/deep_copy/test_mock_ObjectCopyRequest.cc b/src/test/librbd/deep_copy/test_mock_ObjectCopyRequest.cc index ba7966c9a388..7d61bb84716d 100644 --- a/src/test/librbd/deep_copy/test_mock_ObjectCopyRequest.cc +++ b/src/test/librbd/deep_copy/test_mock_ObjectCopyRequest.cc @@ -112,7 +112,6 @@ public: librbd::ImageCtx *m_src_image_ctx; librbd::ImageCtx *m_dst_image_ctx; - ThreadPool *m_thread_pool; ContextWQ *m_work_queue; SnapMap m_snap_map; @@ -133,8 +132,7 @@ public: ASSERT_EQ(0, create_image_pp(rbd, m_ioctx, dst_image_name, m_image_size)); ASSERT_EQ(0, open_image(dst_image_name, &m_dst_image_ctx)); - librbd::ImageCtx::get_thread_pool_instance(m_src_image_ctx->cct, - &m_thread_pool, &m_work_queue); + librbd::ImageCtx::get_work_queue(m_src_image_ctx->cct, &m_work_queue); } bool is_fast_diff(librbd::MockImageCtx &mock_image_ctx) { diff --git a/src/test/librbd/deep_copy/test_mock_SetHeadRequest.cc b/src/test/librbd/deep_copy/test_mock_SetHeadRequest.cc index f0714f9d3033..3eceb4daff20 100644 --- a/src/test/librbd/deep_copy/test_mock_SetHeadRequest.cc +++ b/src/test/librbd/deep_copy/test_mock_SetHeadRequest.cc @@ -97,7 +97,6 @@ public: typedef image::DetachParentRequest MockDetachParentRequest; librbd::ImageCtx *m_image_ctx; - ThreadPool *m_thread_pool; ContextWQ *m_work_queue; void SetUp() override { @@ -105,8 +104,7 @@ public: ASSERT_EQ(0, open_image(m_image_name, &m_image_ctx)); - librbd::ImageCtx::get_thread_pool_instance(m_image_ctx->cct, &m_thread_pool, - &m_work_queue); + librbd::ImageCtx::get_work_queue(m_image_ctx->cct, &m_work_queue); } void expect_start_op(librbd::MockExclusiveLock &mock_exclusive_lock) { diff --git a/src/test/librbd/deep_copy/test_mock_SnapshotCopyRequest.cc b/src/test/librbd/deep_copy/test_mock_SnapshotCopyRequest.cc index 40c282cd4cd7..e17782c189f3 100644 --- a/src/test/librbd/deep_copy/test_mock_SnapshotCopyRequest.cc +++ b/src/test/librbd/deep_copy/test_mock_SnapshotCopyRequest.cc @@ -106,7 +106,6 @@ public: librbd::ImageCtx *m_src_image_ctx; librbd::ImageCtx *m_dst_image_ctx; - ThreadPool *m_thread_pool; ContextWQ *m_work_queue; librbd::SnapSeqs m_snap_seqs; @@ -121,8 +120,7 @@ public: ASSERT_EQ(0, create_image_pp(rbd, m_ioctx, dst_image_name, m_image_size)); ASSERT_EQ(0, open_image(dst_image_name, &m_dst_image_ctx)); - librbd::ImageCtx::get_thread_pool_instance(m_src_image_ctx->cct, - &m_thread_pool, &m_work_queue); + librbd::ImageCtx::get_work_queue(m_src_image_ctx->cct, &m_work_queue); } void prepare_exclusive_lock(librbd::MockImageCtx &mock_image_ctx, diff --git a/src/test/librbd/deep_copy/test_mock_SnapshotCreateRequest.cc b/src/test/librbd/deep_copy/test_mock_SnapshotCreateRequest.cc index 975aea937d86..571820edad89 100644 --- a/src/test/librbd/deep_copy/test_mock_SnapshotCreateRequest.cc +++ b/src/test/librbd/deep_copy/test_mock_SnapshotCreateRequest.cc @@ -76,7 +76,6 @@ public: typedef SnapshotCreateRequest MockSnapshotCreateRequest; librbd::ImageCtx *m_image_ctx; - ThreadPool *m_thread_pool; ContextWQ *m_work_queue; void SetUp() override { @@ -84,8 +83,7 @@ public: ASSERT_EQ(0, open_image(m_image_name, &m_image_ctx)); - librbd::ImageCtx::get_thread_pool_instance(m_image_ctx->cct, &m_thread_pool, - &m_work_queue); + librbd::ImageCtx::get_work_queue(m_image_ctx->cct, &m_work_queue); } void expect_start_op(librbd::MockExclusiveLock &mock_exclusive_lock) { diff --git a/src/test/librbd/test_mock_DeepCopyRequest.cc b/src/test/librbd/test_mock_DeepCopyRequest.cc index 340fe1e2a4d6..c6ec8d6ace89 100644 --- a/src/test/librbd/test_mock_DeepCopyRequest.cc +++ b/src/test/librbd/test_mock_DeepCopyRequest.cc @@ -149,7 +149,6 @@ public: librbd::ImageCtx *m_src_image_ctx; librbd::ImageCtx *m_dst_image_ctx; - ThreadPool *m_thread_pool; ContextWQ *m_work_queue; void SetUp() override { @@ -160,8 +159,7 @@ public: ASSERT_EQ(0, open_image(m_image_name, &m_dst_image_ctx)); - librbd::ImageCtx::get_thread_pool_instance(m_src_image_ctx->cct, - &m_thread_pool, &m_work_queue); + librbd::ImageCtx::get_work_queue(m_src_image_ctx->cct, &m_work_queue); } void TearDown() override {