From 1a4e51caca8b5eba3acdae065ead11eb82702e8c Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Fri, 18 Dec 2020 10:14:13 -0500 Subject: [PATCH] librbd: drop explicit masking of implicit feature bits Now that the create image state machine is handling the masking of implicit features, all callers to the state machine can skip the need to perform the masking themselves. Signed-off-by: Jason Dillaman (cherry picked from commit e1dd69391900a236fbda5e4cee58e9bdc20824fc) Conflicts: src/librbd/api/Migration.cc - in octopus, this file does not mention RBD_FEATURES_IMPLICIT_ENABLE --- src/librbd/api/Image.cc | 2 +- src/librbd/api/Migration.cc | 2 -- src/test/librbd/test_DeepCopy.cc | 1 - src/test/librbd/test_Migration.cc | 2 -- src/test/rbd_mirror/test_ImageDeleter.cc | 3 +-- src/test/rbd_mirror/test_fixture.cc | 4 +--- src/tools/rbd_mirror/image_replayer/CreateImageRequest.cc | 3 +-- 7 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/librbd/api/Image.cc b/src/librbd/api/Image.cc index 6b95ac696bcb9..14ee0fdebf8ac 100644 --- a/src/librbd/api/Image.cc +++ b/src/librbd/api/Image.cc @@ -548,7 +548,7 @@ int Image::deep_copy(I *src, librados::IoCtx& dest_md_ctx, return -EBUSY; } - features = (src->features & ~RBD_FEATURES_IMPLICIT_ENABLE); + features = src->features; src_size = src->get_image_size(src->snap_id); } uint64_t format = 2; diff --git a/src/librbd/api/Migration.cc b/src/librbd/api/Migration.cc index 3d464d0795173..2325d5e978a56 100644 --- a/src/librbd/api/Migration.cc +++ b/src/librbd/api/Migration.cc @@ -459,8 +459,6 @@ int Migration::prepare(librados::IoCtx& io_ctx, cls::rbd::MIGRATION_STATE_PREPARING, "", nullptr); r = migration.prepare(); - opts.set(RBD_IMAGE_OPTION_FEATURES, features); - return r; } diff --git a/src/test/librbd/test_DeepCopy.cc b/src/test/librbd/test_DeepCopy.cc index 6bdb82c1cd9cc..2f02b53415df6 100644 --- a/src/test/librbd/test_DeepCopy.cc +++ b/src/test/librbd/test_DeepCopy.cc @@ -411,7 +411,6 @@ struct TestDeepCopy : public TestFixture { int order = m_src_ictx->order; uint64_t features; ASSERT_EQ(0, librbd::get_features(m_src_ictx, &features)); - features &= ~RBD_FEATURES_IMPLICIT_ENABLE; std::cout << "clone " << m_src_ictx->name << " -> " << clone_name << std::endl; diff --git a/src/test/librbd/test_Migration.cc b/src/test/librbd/test_Migration.cc index 69182ddcea5f6..45b8ec2bb4abb 100644 --- a/src/test/librbd/test_Migration.cc +++ b/src/test/librbd/test_Migration.cc @@ -293,7 +293,6 @@ struct TestMigration : public TestFixture { int order = m_ref_ictx->order; uint64_t features; ASSERT_EQ(0, librbd::get_features(m_ref_ictx, &features)); - features &= ~RBD_FEATURES_IMPLICIT_ENABLE; std::string ref_clone_name = get_temp_image_name(); std::string clone_name = get_temp_image_name(); @@ -406,7 +405,6 @@ struct TestMigration : public TestFixture { int order = m_ictx->order; uint64_t features; ASSERT_EQ(0, librbd::get_features(m_ictx, &features)); - features &= ~RBD_FEATURES_IMPLICIT_ENABLE; std::string clone_name = get_temp_image_name(); ASSERT_EQ(0, librbd::clone(m_ictx->md_ctx, m_ictx->name.c_str(), "snap1", diff --git a/src/test/rbd_mirror/test_ImageDeleter.cc b/src/test/rbd_mirror/test_ImageDeleter.cc index 9bd2658daedb4..329da40cb9ce1 100644 --- a/src/test/rbd_mirror/test_ImageDeleter.cc +++ b/src/test/rbd_mirror/test_ImageDeleter.cc @@ -73,8 +73,7 @@ public: m_local_image_id = librbd::util::generate_image_id(m_local_io_ctx); librbd::ImageOptions image_opts; - image_opts.set(RBD_IMAGE_OPTION_FEATURES, - (RBD_FEATURES_ALL & ~RBD_FEATURES_IMPLICIT_ENABLE)); + image_opts.set(RBD_IMAGE_OPTION_FEATURES, RBD_FEATURES_ALL); EXPECT_EQ(0, librbd::create(m_local_io_ctx, m_image_name, m_local_image_id, 1 << 20, image_opts, GLOBAL_IMAGE_ID, m_remote_mirror_uuid, true)); diff --git a/src/test/rbd_mirror/test_fixture.cc b/src/test/rbd_mirror/test_fixture.cc index 092d41f5f651e..b0b345fb91a15 100644 --- a/src/test/rbd_mirror/test_fixture.cc +++ b/src/test/rbd_mirror/test_fixture.cc @@ -89,9 +89,7 @@ void TestFixture::TearDown() { int TestFixture::create_image(librbd::RBD &rbd, librados::IoCtx &ioctx, const std::string &name, uint64_t size) { int order = 18; - return rbd.create2(ioctx, name.c_str(), size, - (RBD_FEATURES_ALL & ~RBD_FEATURES_IMPLICIT_ENABLE), - &order); + return rbd.create2(ioctx, name.c_str(), size, RBD_FEATURES_ALL, &order); } int TestFixture::open_image(librados::IoCtx &io_ctx, diff --git a/src/tools/rbd_mirror/image_replayer/CreateImageRequest.cc b/src/tools/rbd_mirror/image_replayer/CreateImageRequest.cc index 3cd57afc5f086..5acb700c1815c 100644 --- a/src/tools/rbd_mirror/image_replayer/CreateImageRequest.cc +++ b/src/tools/rbd_mirror/image_replayer/CreateImageRequest.cc @@ -404,8 +404,7 @@ template void CreateImageRequest::populate_image_options( librbd::ImageOptions* image_options) { image_options->set(RBD_IMAGE_OPTION_FEATURES, - (m_remote_image_ctx->features & - ~RBD_FEATURES_IMPLICIT_ENABLE)); + m_remote_image_ctx->features); image_options->set(RBD_IMAGE_OPTION_ORDER, m_remote_image_ctx->order); image_options->set(RBD_IMAGE_OPTION_STRIPE_UNIT, m_remote_image_ctx->stripe_unit); -- 2.39.5