diff --git a/qa/suites/rbd/basic/tasks/rbd_cls_tests.yaml b/qa/suites/rbd/basic/tasks/rbd_cls_tests.yaml index 9ccd57c4a82a7..51b35e2e17ca1 100644 --- a/qa/suites/rbd/basic/tasks/rbd_cls_tests.yaml +++ b/qa/suites/rbd/basic/tasks/rbd_cls_tests.yaml @@ -3,3 +3,5 @@ tasks: clients: client.0: - cls/test_cls_rbd.sh + - cls/test_cls_lock.sh + - cls/test_cls_journal.sh diff --git a/qa/workunits/cls/test_cls_journal.sh b/qa/workunits/cls/test_cls_journal.sh new file mode 100755 index 0000000000000..9aa7450a9940c --- /dev/null +++ b/qa/workunits/cls/test_cls_journal.sh @@ -0,0 +1,6 @@ +#!/bin/sh -e + +GTEST_FILTER=${CLS_JOURNAL_GTEST_FILTER:-*} +ceph_test_cls_journal --gtest_filter=${GTEST_FILTER} + +exit 0 diff --git a/src/cls/journal/cls_journal.cc b/src/cls/journal/cls_journal.cc index dfcba9813a3a3..2f1d18d0d79c8 100644 --- a/src/cls/journal/cls_journal.cc +++ b/src/cls/journal/cls_journal.cc @@ -188,6 +188,7 @@ int expire_tags(cls_method_context_t hctx, const std::string *skip_client_id) { if (tag.tid >= minimum_tag_tid) { // no need to check for tag classes beyond this point vals.clear(); + more = false; break; } } diff --git a/src/test/cls_journal/test_cls_journal.cc b/src/test/cls_journal/test_cls_journal.cc index d9cdb6b7754f1..7d948c976e62d 100644 --- a/src/test/cls_journal/test_cls_journal.cc +++ b/src/test/cls_journal/test_cls_journal.cc @@ -322,15 +322,21 @@ TEST_F(TestClsJournal, ClientUnregisterPruneTags) { bufferlist())); ASSERT_EQ(0, client::tag_create(ioctx, oid, 1, Tag::TAG_CLASS_NEW, bufferlist())); - ASSERT_EQ(0, client::tag_create(ioctx, oid, 2, 1, bufferlist())); + + for (uint32_t i = 2; i <= 96; ++i) { + ASSERT_EQ(0, client::tag_create(ioctx, oid, i, 1, bufferlist())); + } librados::ObjectWriteOperation op1; - client::client_commit(&op1, "id1", {{{1, 2, 120}}}); + client::client_commit(&op1, "id1", {{{1, 32, 120}}}); ASSERT_EQ(0, ioctx.operate(oid, &op1)); ASSERT_EQ(0, client::client_unregister(ioctx, oid, "id2")); - std::set expected_tags = {{0, 0, {}}, {2, 1, {}}}; + std::set expected_tags = {{0, 0, {}}}; + for (uint32_t i = 32; i <= 96; ++i) { + expected_tags.insert({i, 1, {}}); + } std::set tags; ASSERT_EQ(0, client::tag_list(ioctx, oid, "id1", boost::optional(), &tags));