From 3492153d36a3fa2a3f713eff6a81bfa31937e31f Mon Sep 17 00:00:00 2001 From: Venky Shankar Date: Thu, 7 Jul 2016 12:20:52 +0530 Subject: [PATCH] journaler: remove ununsed synchronous API routines Synchronous callers now call the asynchronous version wrapped around C_SaferCond. Also take care of mocked methods. Fixes: http://tracker.ceph.com/issues/15321 Signed-off-by: Venky Shankar --- src/journal/JournalTrimmer.cc | 32 ---------------- src/journal/JournalTrimmer.h | 1 - src/journal/Journaler.cc | 51 ------------------------- src/journal/Journaler.h | 3 -- src/librbd/Journal.cc | 4 +- src/test/journal/mock/MockJournaler.h | 12 +++--- src/test/journal/test_JournalTrimmer.cc | 15 ++++++-- src/test/journal/test_Journaler.cc | 4 +- 8 files changed, 24 insertions(+), 98 deletions(-) diff --git a/src/journal/JournalTrimmer.cc b/src/journal/JournalTrimmer.cc index 591ce83c22d3..5e68349513cf 100644 --- a/src/journal/JournalTrimmer.cc +++ b/src/journal/JournalTrimmer.cc @@ -47,38 +47,6 @@ void JournalTrimmer::shut_down(Context *on_finish) { m_journal_metadata->flush_commit_position(on_finish); } -int JournalTrimmer::remove_objects(bool force) { - ldout(m_cct, 20) << __func__ << dendl; - m_async_op_tracker.wait_for_ops(); - - C_SaferCond ctx; - { - Mutex::Locker locker(m_lock); - - if (m_remove_set_pending) { - return -EBUSY; - } - - if (!force) { - JournalMetadata::RegisteredClients registered_clients; - m_journal_metadata->get_registered_clients(®istered_clients); - - if (registered_clients.size() == 0) { - return -EINVAL; - } else if (registered_clients.size() > 1) { - return -EBUSY; - } - } - - m_remove_set = std::numeric_limits::max(); - m_remove_set_pending = true; - m_remove_set_ctx = &ctx; - - remove_set(m_journal_metadata->get_minimum_set()); - } - return ctx.wait(); -} - void JournalTrimmer::remove_objects(bool force, Context *on_finish) { ldout(m_cct, 20) << __func__ << dendl; diff --git a/src/journal/JournalTrimmer.h b/src/journal/JournalTrimmer.h index 41c4a379f77d..89de0205cbf8 100644 --- a/src/journal/JournalTrimmer.h +++ b/src/journal/JournalTrimmer.h @@ -27,7 +27,6 @@ public: void shut_down(Context *on_finish); - int remove_objects(bool force); void remove_objects(bool force, Context *on_finish); void committed(uint64_t commit_tid); diff --git a/src/journal/Journaler.cc b/src/journal/Journaler.cc index 1d69f63edaa1..3487b756178c 100644 --- a/src/journal/Journaler.cc +++ b/src/journal/Journaler.cc @@ -115,16 +115,6 @@ Journaler::~Journaler() { delete m_threads; } -int Journaler::exists(bool *header_exists) const { - int r = m_header_ioctx.stat(m_header_oid, NULL, NULL); - if (r < 0 && r != -ENOENT) { - return r; - } - - *header_exists = (r == 0); - return 0; -} - void Journaler::exists(Context *on_finish) const { librados::ObjectReadOperation op; op.stat(NULL, NULL, NULL); @@ -213,25 +203,6 @@ void Journaler::get_mutable_metadata(uint64_t *minimum_set, m_metadata->get_mutable_metadata(minimum_set, active_set, clients, on_finish); } -int Journaler::create(uint8_t order, uint8_t splay_width, int64_t pool_id) { - if (order > 64 || order < 12) { - lderr(m_cct) << "order must be in the range [12, 64]" << dendl; - return -EDOM; - } - if (splay_width == 0) { - return -EINVAL; - } - - ldout(m_cct, 5) << "creating new journal: " << m_header_oid << dendl; - int r = client::create(m_header_ioctx, m_header_oid, order, splay_width, - pool_id); - if (r < 0) { - lderr(m_cct) << "failed to create journal: " << cpp_strerror(r) << dendl; - return r; - } - return 0; -} - void Journaler::create(uint8_t order, uint8_t splay_width, int64_t pool_id, Context *on_finish) { if (order > 64 || order < 12) { @@ -256,28 +227,6 @@ void Journaler::create(uint8_t order, uint8_t splay_width, comp->release(); } -int Journaler::remove(bool force) { - C_SaferCond ctx; - m_metadata->shut_down(&ctx); - ctx.wait(); - - ldout(m_cct, 5) << "removing journal: " << m_header_oid << dendl; - int r = m_trimmer->remove_objects(force); - if (r < 0) { - lderr(m_cct) << "failed to remove journal objects: " << cpp_strerror(r) - << dendl; - return r; - } - - r = m_header_ioctx.remove(m_header_oid); - if (r < 0) { - lderr(m_cct) << "failed to remove journal header: " << cpp_strerror(r) - << dendl; - return r; - } - return 0; -} - void Journaler::remove(bool force, Context *on_finish) { // chain journal removal (reverse order) on_finish = new FunctionContext([this, on_finish](int r) { diff --git a/src/journal/Journaler.h b/src/journal/Journaler.h index 6c38a3962816..49d1f67aec97 100644 --- a/src/journal/Journaler.h +++ b/src/journal/Journaler.h @@ -58,11 +58,8 @@ public: const std::string &client_id, const Settings &settings); ~Journaler(); - int exists(bool *header_exists) const; void exists(Context *on_finish) const; - int create(uint8_t order, uint8_t splay_width, int64_t pool_id); void create(uint8_t order, uint8_t splay_width, int64_t pool_id, Context *ctx); - int remove(bool force); void remove(bool force, Context *on_finish); void init(Context *on_init); diff --git a/src/librbd/Journal.cc b/src/librbd/Journal.cc index 3d249b69b687..71743c141070 100644 --- a/src/librbd/Journal.cc +++ b/src/librbd/Journal.cc @@ -414,7 +414,9 @@ int Journal::reset(librados::IoCtx &io_ctx, const std::string &image_id) { } } - r = journaler.remove(true); + C_SaferCond ctx1; + journaler.remove(true, &ctx1); + r = ctx1.wait(); if (r < 0) { lderr(cct) << __func__ << ": " << "failed to reset journal: " << cpp_strerror(r) << dendl; diff --git a/src/test/journal/mock/MockJournaler.h b/src/test/journal/mock/MockJournaler.h index 3912a47ff4e9..f4eceebe8e64 100644 --- a/src/test/journal/mock/MockJournaler.h +++ b/src/test/journal/mock/MockJournaler.h @@ -147,14 +147,14 @@ struct MockJournalerProxy { MockJournaler::get_instance().construct(); } - int exists(bool *header_exists) const { - return -EINVAL; + void exists(Context *on_finish) const { + on_finish->complete(-EINVAL); } - int create(uint8_t order, uint8_t splay_width, int64_t pool_id) { - return -EINVAL; + void create(uint8_t order, uint8_t splay_width, int64_t pool_id, Context *on_finish) { + on_finish->complete(-EINVAL); } - int remove(bool force) { - return -EINVAL; + void remove(bool force, Context *on_finish) { + on_finish->complete(-EINVAL); } int register_client(const bufferlist &data) { return -EINVAL; diff --git a/src/test/journal/test_JournalTrimmer.cc b/src/test/journal/test_JournalTrimmer.cc index 2849019a4f9b..8e09e870d254 100644 --- a/src/test/journal/test_JournalTrimmer.cc +++ b/src/test/journal/test_JournalTrimmer.cc @@ -163,7 +163,10 @@ TEST_F(TestJournalTrimmer, RemoveObjects) { journal::JournalTrimmer *trimmer = create_trimmer(oid, metadata); - ASSERT_EQ(0, trimmer->remove_objects(false)); + C_SaferCond cond; + trimmer->remove_objects(false, &cond); + ASSERT_EQ(0, cond.wait()); + ASSERT_TRUE(wait_for_update(metadata)); ASSERT_EQ(-ENOENT, assert_exists(oid + ".0")); @@ -183,7 +186,13 @@ TEST_F(TestJournalTrimmer, RemoveObjectsWithOtherClient) { ASSERT_TRUE(wait_for_update(metadata)); journal::JournalTrimmer *trimmer = create_trimmer(oid, metadata); - ASSERT_EQ(-EBUSY, trimmer->remove_objects(false)); - ASSERT_EQ(0, trimmer->remove_objects(true)); + + C_SaferCond ctx1; + trimmer->remove_objects(false, &ctx1); + ASSERT_EQ(-EBUSY, ctx1.wait()); + + C_SaferCond ctx2; + trimmer->remove_objects(true, &ctx2); + ASSERT_EQ(0, ctx2.wait()); } diff --git a/src/test/journal/test_Journaler.cc b/src/test/journal/test_Journaler.cc index d40069505c10..7b8be81b5607 100644 --- a/src/test/journal/test_Journaler.cc +++ b/src/test/journal/test_Journaler.cc @@ -31,7 +31,9 @@ public: } int create_journal(uint8_t order, uint8_t splay_width) { - return m_journaler->create(order, splay_width, -1); + C_SaferCond cond; + m_journaler->create(order, splay_width, -1, &cond); + return cond.wait(); } int init_journaler() { -- 2.47.3