}
C_ImmutableMetadata *ctx = new C_ImmutableMetadata(this, on_init);
- client::get_immutable_metadata(m_ioctx, m_oid, &m_order, &m_splay_width,
- &m_pool_id, ctx);
+ get_immutable_metadata(&m_order, &m_splay_width, &m_pool_id, ctx);
}
void JournalMetadata::shutdown() {
m_ioctx.aio_flush();
}
+void JournalMetadata::get_immutable_metadata(uint8_t *order,
+ uint8_t *splay_width,
+ int64_t *pool_id,
+ Context *on_finish) {
+ client::get_immutable_metadata(m_ioctx, m_oid, order, splay_width, pool_id,
+ on_finish);
+}
+
+void JournalMetadata::get_mutable_metadata(uint64_t *minimum_set,
+ uint64_t *active_set,
+ RegisteredClients *clients,
+ Context *on_finish) {
+ client::get_mutable_metadata(m_ioctx, m_oid, minimum_set, active_set, clients,
+ on_finish);
+}
+
int JournalMetadata::register_client(const bufferlist &data) {
ldout(m_cct, 10) << __func__ << ": " << m_client_id << dendl;
int r = client::client_register(m_ioctx, m_oid, m_client_id, data);
void JournalMetadata::refresh(Context *on_complete) {
ldout(m_cct, 10) << "refreshing mutable metadata" << dendl;
C_Refresh *refresh = new C_Refresh(this, on_complete);
- client::get_mutable_metadata(m_ioctx, m_oid, &refresh->minimum_set,
- &refresh->active_set,
- &refresh->registered_clients, refresh);
+ get_mutable_metadata(&refresh->minimum_set, &refresh->active_set,
+ &refresh->registered_clients, refresh);
}
void JournalMetadata::handle_refresh_complete(C_Refresh *refresh, int r) {
void init(Context *on_init);
void shutdown();
+ void get_immutable_metadata(uint8_t *order, uint8_t *splay_width,
+ int64_t *pool_id, Context *on_finish);
+
+ void get_mutable_metadata(uint64_t *minimum_set, uint64_t *active_set,
+ RegisteredClients *clients, Context *on_finish);
+
void add_listener(Listener *listener);
void remove_listener(Listener *listener);
m_metadata->shutdown();
}
+void Journaler::get_immutable_metadata(uint8_t *order, uint8_t *splay_width,
+ int64_t *pool_id, Context *on_finish) {
+ m_metadata->get_immutable_metadata(order, splay_width, pool_id, on_finish);
+}
+
+void Journaler::get_mutable_metadata(uint64_t *minimum_set,
+ uint64_t *active_set,
+ RegisteredClients *clients,
+ Context *on_finish) {
+ m_metadata->get_mutable_metadata(minimum_set, active_set, clients, on_finish);
+}
+
int Journaler::create(uint8_t order, uint8_t splay_width, int64_t pool_id) {
if (order > 64 || order < 12) {
lderr(m_cct) << "order must be in the range [12, 64]" << dendl;
class Journaler {
public:
typedef std::list<cls::journal::Tag> Tags;
+ typedef std::set<cls::journal::Client> RegisteredClients;
static std::string header_oid(const std::string &journal_id);
static std::string object_oid_prefix(int pool_id,
void init(Context *on_init);
void shutdown();
+ void get_immutable_metadata(uint8_t *order, uint8_t *splay_width,
+ int64_t *pool_id, Context *on_finish);
+ void get_mutable_metadata(uint64_t *minimum_set, uint64_t *active_set,
+ RegisteredClients *clients, Context *on_finish);
+
int register_client(const bufferlist &data);
int unregister_client();