From: Jason Dillaman Date: Fri, 26 Feb 2016 15:55:27 +0000 (-0500) Subject: journal: helper method to retrieve in-memory client data X-Git-Tag: v10.1.0~187^2~9 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=a4dd788588992a33358fb272c7f561865eb32dc7;p=ceph.git journal: helper method to retrieve in-memory client data Signed-off-by: Jason Dillaman --- diff --git a/src/journal/Journaler.cc b/src/journal/Journaler.cc index a6220ef1012af..f81e6f611629a 100644 --- a/src/journal/Journaler.cc +++ b/src/journal/Journaler.cc @@ -199,6 +199,20 @@ void Journaler::unregister_client(Context *on_finish) { return m_metadata->unregister_client(on_finish); } +int Journaler::get_cached_client(const std::string &client_id, + cls::journal::Client *client) { + RegisteredClients clients; + m_metadata->get_registered_clients(&clients); + + auto it = clients.find({client_id, {}}); + if (it == clients.end()) { + return -ENOENT; + } + + *client = *it; + return 0; +} + void Journaler::allocate_tag(const bufferlist &data, cls::journal::Tag *tag, Context *on_finish) { m_metadata->allocate_tag(cls::journal::Tag::TAG_CLASS_NEW, data, tag, diff --git a/src/journal/Journaler.h b/src/journal/Journaler.h index 2e9ba85bb2083..2ce8acd7692bf 100644 --- a/src/journal/Journaler.h +++ b/src/journal/Journaler.h @@ -52,11 +52,16 @@ public: RegisteredClients *clients, Context *on_finish); int register_client(const bufferlist &data); - int unregister_client(); void register_client(const bufferlist &data, Context *on_finish); - void update_client(const bufferlist &data, Context *on_finish); + + int unregister_client(); void unregister_client(Context *on_finish); + void update_client(const bufferlist &data, Context *on_finish); + + int get_cached_client(const std::string &client_id, + cls::journal::Client *client); + void flush_commit_position(Context *on_safe); void allocate_tag(const bufferlist &data, cls::journal::Tag *tag,