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 <dillaman@redhat.com>
(cherry picked from commit
e1dd69391900a236fbda5e4cee58e9bdc20824fc)
Conflicts:
src/librbd/api/Migration.cc
- in octopus, this file does not mention RBD_FEATURES_IMPLICIT_ENABLE
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;
cls::rbd::MIGRATION_STATE_PREPARING, "", nullptr);
r = migration.prepare();
- opts.set(RBD_IMAGE_OPTION_FEATURES, features);
-
return r;
}
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;
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();
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",
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));
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,
void CreateImageRequest<I>::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);