From 606344dd29ee7bea3f8c2cb41fc20c9b7ef8c8f9 Mon Sep 17 00:00:00 2001 From: Mykola Golub Date: Mon, 19 Sep 2016 09:39:26 +0300 Subject: [PATCH] librbd: templetize journal StandardPolicy It will be needed for unit tests with a mocked ImageCtx. Signed-off-by: Mykola Golub --- src/librbd/ImageCtx.cc | 2 +- src/librbd/journal/StandardPolicy.cc | 5 ++++- src/librbd/journal/StandardPolicy.h | 7 +++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/librbd/ImageCtx.cc b/src/librbd/ImageCtx.cc index d5437fd1edd..11422d806e9 100644 --- a/src/librbd/ImageCtx.cc +++ b/src/librbd/ImageCtx.cc @@ -210,7 +210,7 @@ struct C_InvalidateCache : public Context { } else { exclusive_lock_policy = new exclusive_lock::StandardPolicy(this); } - journal_policy = new journal::StandardPolicy(this); + journal_policy = new journal::StandardPolicy(this); } ImageCtx::~ImageCtx() { diff --git a/src/librbd/journal/StandardPolicy.cc b/src/librbd/journal/StandardPolicy.cc index 5cba7c02011..7e5e329d700 100644 --- a/src/librbd/journal/StandardPolicy.cc +++ b/src/librbd/journal/StandardPolicy.cc @@ -13,7 +13,8 @@ namespace librbd { namespace journal { -void StandardPolicy::allocate_tag_on_lock(Context *on_finish) { +template +void StandardPolicy::allocate_tag_on_lock(Context *on_finish) { assert(m_image_ctx->journal != nullptr); if (!m_image_ctx->journal->is_tag_owner()) { @@ -27,3 +28,5 @@ void StandardPolicy::allocate_tag_on_lock(Context *on_finish) { } // namespace journal } // namespace librbd + +template class librbd::journal::StandardPolicy; diff --git a/src/librbd/journal/StandardPolicy.h b/src/librbd/journal/StandardPolicy.h index b1c99cb34ff..de3f48bb02c 100644 --- a/src/librbd/journal/StandardPolicy.h +++ b/src/librbd/journal/StandardPolicy.h @@ -12,9 +12,10 @@ struct ImageCtx; namespace journal { +template class StandardPolicy : public Policy { public: - StandardPolicy(ImageCtx *image_ctx) : m_image_ctx(image_ctx) { + StandardPolicy(ImageCtxT *image_ctx) : m_image_ctx(image_ctx) { } virtual bool append_disabled() const { @@ -26,10 +27,12 @@ public: virtual void allocate_tag_on_lock(Context *on_finish); private: - ImageCtx *m_image_ctx; + ImageCtxT *m_image_ctx; }; } // namespace journal } // namespace librbd +extern template class librbd::journal::StandardPolicy; + #endif // CEPH_LIBRBD_JOURNAL_STANDARD_POLICY_H -- 2.47.3