From: Jason Dillaman Date: Wed, 27 Jul 2016 00:48:13 +0000 (-0400) Subject: librbd: optionally support disabling journal appends via policy X-Git-Tag: v11.0.1~572^2~8 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=f7eeacd02f8f80c5d1d5d9cfed35bbd23f64b018;p=ceph-ci.git librbd: optionally support disabling journal appends via policy Signed-off-by: Jason Dillaman --- diff --git a/src/librbd/journal/Policy.h b/src/librbd/journal/Policy.h index 826562228a0..85373cd1abc 100644 --- a/src/librbd/journal/Policy.h +++ b/src/librbd/journal/Policy.h @@ -14,6 +14,7 @@ struct Policy { virtual ~Policy() { } + virtual bool append_disabled() const = 0; virtual void allocate_tag_on_lock(Context *on_finish) = 0; virtual void cancel_external_replay(Context *on_finish) = 0; }; diff --git a/src/librbd/journal/StandardPolicy.h b/src/librbd/journal/StandardPolicy.h index c49ec9cb467..e2b1ad7bc83 100644 --- a/src/librbd/journal/StandardPolicy.h +++ b/src/librbd/journal/StandardPolicy.h @@ -17,6 +17,9 @@ public: StandardPolicy(ImageCtx *image_ctx) : m_image_ctx(image_ctx) { } + virtual bool append_disabled() const { + return false; + } virtual void allocate_tag_on_lock(Context *on_finish); virtual void cancel_external_replay(Context *on_finish); diff --git a/src/test/librbd/mock/MockJournalPolicy.h b/src/test/librbd/mock/MockJournalPolicy.h index e7debfaf535..c10fd6fbf1f 100644 --- a/src/test/librbd/mock/MockJournalPolicy.h +++ b/src/test/librbd/mock/MockJournalPolicy.h @@ -11,6 +11,7 @@ namespace librbd { struct MockJournalPolicy : public journal::Policy { + MOCK_CONST_METHOD0(append_disabled, bool()); MOCK_METHOD1(allocate_tag_on_lock, void(Context*)); MOCK_METHOD1(cancel_external_replay, void(Context*)); diff --git a/src/tools/rbd_mirror/ImageDeleter.cc b/src/tools/rbd_mirror/ImageDeleter.cc index e4ad55ae60f..7c5caee640a 100644 --- a/src/tools/rbd_mirror/ImageDeleter.cc +++ b/src/tools/rbd_mirror/ImageDeleter.cc @@ -74,6 +74,10 @@ private: }; struct DeleteJournalPolicy : public librbd::journal::Policy { + virtual bool append_disabled() const { + return true; + } + virtual void allocate_tag_on_lock(Context *on_finish) { on_finish->complete(0); } diff --git a/src/tools/rbd_mirror/image_replayer/OpenLocalImageRequest.cc b/src/tools/rbd_mirror/image_replayer/OpenLocalImageRequest.cc index 63597ebf431..856034bebae 100644 --- a/src/tools/rbd_mirror/image_replayer/OpenLocalImageRequest.cc +++ b/src/tools/rbd_mirror/image_replayer/OpenLocalImageRequest.cc @@ -44,6 +44,11 @@ struct MirrorJournalPolicy : public librbd::journal::Policy { MirrorJournalPolicy(ContextWQ *work_queue) : work_queue(work_queue) { } + virtual bool append_disabled() const { + // avoid recording any events to the local journal + return true; + } + virtual void allocate_tag_on_lock(Context *on_finish) { // rbd-mirror will manually create tags by copying them from the peer work_queue->queue(on_finish, 0);