1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 #ifndef CEPH_LIBRBD_JOURNAL_OPEN_REQUEST_H
5 #define CEPH_LIBRBD_JOURNAL_OPEN_REQUEST_H
7 #include "include/int_types.h"
8 #include "librbd/journal/TypeTraits.h"
19 struct ImageClientMeta;
22 template <typename ImageCtxT = ImageCtx>
25 typedef typename TypeTraits<ImageCtxT>::Journaler Journaler;
27 static OpenRequest* create(ImageCtxT *image_ctx, Journaler *journaler,
28 Mutex *lock, journal::ImageClientMeta *client_meta,
29 uint64_t *tag_tid, journal::TagData *tag_data,
31 return new OpenRequest(image_ctx, journaler, lock, client_meta, tag_tid,
35 OpenRequest(ImageCtxT *image_ctx, Journaler *journaler, Mutex *lock,
36 journal::ImageClientMeta *client_meta, uint64_t *tag_tid,
37 journal::TagData *tag_data, Context *on_finish);
60 ImageCtxT *m_image_ctx;
61 Journaler *m_journaler;
63 journal::ImageClientMeta *m_client_meta;
65 journal::TagData *m_tag_data;
68 uint64_t m_tag_class = 0;
71 void handle_init(int r);
74 void handle_get_tags(int r);
80 } // namespace journal
83 extern template class librbd::journal::OpenRequest<librbd::ImageCtx>;
85 #endif // CEPH_LIBRBD_JOURNAL_OPEN_REQUEST_H