Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

librbd: journal framework for tracking exclusive lock transitions #7529

Merged
merged 7 commits into from Feb 6, 2016

Conversation

dillaman
Copy link

@dillaman dillaman commented Feb 5, 2016

No description provided.

Later commits will add the ability to allocate tags and
associate them with registered clients.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
@jdurgin
Copy link
Member

jdurgin commented Feb 5, 2016

I wish there were a notification when the check failed:

test/cls_journal/test_cls_journal.cc: In member function ‘virtual void TestClsJournal_TagList_Test::TestBody()’:
test/cls_journal/test_cls_journal.cc:515:283: error: converting to ‘boost::optional’ from initializer list would use explicit constructor ‘boost::optional::optional(const Expr&) [with Expr = int; T = long unsigned int]’
   ASSERT_EQ(0, client::tag_list(ioctx, oid, "id1", 0, &tags));
                                                                                                                                                                                                                                                                                           ^
In file included from test/cls_journal/test_cls_journal.cc:4:0:
./cls/journal/cls_journal_client.h:82:5: error:   initializing argument 4 of ‘int cls::journal::client::tag_list(librados::IoCtx&, const string&, const string&, boost::optional, std::set*)’
 int tag_list(librados::IoCtx &ioctx, const std::string &oid,
     ^

@dillaman
Copy link
Author

dillaman commented Feb 5, 2016

@jdurgin fun times -- compiles under F23. I'll explicitly convert it to an optional and try again.

Jason Dillaman added 6 commits February 5, 2016 15:21
In the case of librbd, a new tag will be allocated when the
exclusive lock is acquired.  All tags for the same dataset
(e.g. librbd image) will belong to the same class.  Tags are
automatically pruned on tag create / client unregister
if no other clients' commit position would require the tags.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
The opaque structure will support journal client applications to
store and retrieve complex state.

Fixes: ceph#13298

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
librbd, for example, will allocate a new tag after acquiring
the exclusive lock.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
jdurgin added a commit that referenced this pull request Feb 6, 2016
librbd: journal framework for tracking exclusive lock transitions

Reviewed-by: Josh Durgin <jdurgin@redhat.com>
@jdurgin jdurgin merged commit 2b2ce9b into ceph:master Feb 6, 2016
@dillaman dillaman deleted the wip-14412 branch February 19, 2016 20:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants