]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: optionally support disabling journal appends via policy
authorJason Dillaman <dillaman@redhat.com>
Wed, 27 Jul 2016 00:48:13 +0000 (20:48 -0400)
committerMykola Golub <mgolub@mirantis.com>
Fri, 19 Aug 2016 19:59:06 +0000 (22:59 +0300)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit f7eeacd02f8f80c5d1d5d9cfed35bbd23f64b018)

src/librbd/journal/Policy.h
src/librbd/journal/StandardPolicy.h
src/test/librbd/mock/MockJournalPolicy.h
src/tools/rbd_mirror/ImageDeleter.cc
src/tools/rbd_mirror/image_replayer/OpenLocalImageRequest.cc

index 826562228a02183d8d1c2a7645cb587b6f3418bd..85373cd1abc564e9bfa9342e25b3443fa4279e7d 100644 (file)
@@ -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;
 };
index c49ec9cb4673050ddc51bb68cb41008e72b125f7..e2b1ad7bc8359cfad6ff166505745962180d4a2a 100644 (file)
@@ -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);
 
index e7debfaf535cce6bcba7fc306649589bb291e2a4..c10fd6fbf1f878ea39da53626d1205082c69f1a6 100644 (file)
@@ -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*));
 
index e4ad55ae60f3ea1510848e496dc1ee0ca0d3b8f8..7c5caee640a238f55a7310f2b533595ad26ae857 100644 (file)
@@ -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);
   }
index 35b6863098b46d56e8c4bba41610f12e4acadcc3..0286e522664c4346e5f33a1df08ef4b631b29100 100644 (file)
@@ -43,6 +43,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);