From: Mykola Golub Date: Mon, 19 Sep 2016 06:39:26 +0000 (+0300) Subject: librbd: templetize journal StandardPolicy X-Git-Tag: v11.0.1~77^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=606344dd29ee7bea3f8c2cb41fc20c9b7ef8c8f9;p=ceph.git librbd: templetize journal StandardPolicy It will be needed for unit tests with a mocked ImageCtx. Signed-off-by: Mykola Golub --- diff --git a/src/librbd/ImageCtx.cc b/src/librbd/ImageCtx.cc index d5437fd1edd7..11422d806e9b 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 5cba7c020112..7e5e329d7000 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 b1c99cb34fff..de3f48bb02ce 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