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;
};
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);
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*));
};
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);
}
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);