#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
-#define dout_prefix *_dout << "librbd::image::CreateRequest: "
+#define dout_prefix *_dout << "librbd::image::CreateRequest: " << __func__ \
+ << ": "
namespace librbd {
namespace image {
} // anonymous namespace
+template<typename I>
+int CreateRequest<I>::validate_order(CephContext *cct, uint8_t order) {
+ if (order > 25 || order < 12) {
+ lderr(cct) << "order must be in the range [12, 25]" << dendl;
+ return -EDOM;
+ }
+ return 0;
+}
+
+#undef dout_prefix
+#define dout_prefix *_dout << "librbd::image::CreateRequest: " << this << " " \
+ << __func__ << ": "
+
template<typename I>
CreateRequest<I>::CreateRequest(IoCtx &ioctx, const std::string &image_name,
const std::string &image_id, uint64_t size,
<< "data_pool=" << m_data_pool << dendl;
}
-template<typename I>
-int CreateRequest<I>::validate_order(CephContext *cct, uint8_t order) {
- if (order > 25 || order < 12) {
- lderr(cct) << "order must be in the range [12, 25]" << dendl;
- return -EDOM;
- }
- return 0;
-}
-
template<typename I>
void CreateRequest<I>::send() {
- ldout(m_cct, 20) << this << " " << __func__ << dendl;
+ ldout(m_cct, 20) << dendl;
int r = validate_features(m_cct, m_features, m_force_non_primary);
if (r < 0) {
return;
}
- ldout(m_cct, 20) << this << " " << __func__ << dendl;
+ ldout(m_cct, 20) << dendl;
using klass = CreateRequest<I>;
librados::AioCompletion *comp =
template<typename I>
void CreateRequest<I>::handle_validate_pool(int r) {
- ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
+ ldout(m_cct, 20) << "r=" << r << dendl;
if (r == 0) {
create_id_object();
template<typename I>
void CreateRequest<I>::create_id_object() {
- ldout(m_cct, 20) << this << " " << __func__ << dendl;
+ ldout(m_cct, 20) << dendl;
librados::ObjectWriteOperation op;
op.create(true);
template<typename I>
void CreateRequest<I>::handle_create_id_object(int r) {
- ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
+ ldout(m_cct, 20) << "r=" << r << dendl;
if (r < 0) {
lderr(m_cct) << "error creating RBD id object: " << cpp_strerror(r)
template<typename I>
void CreateRequest<I>::add_image_to_directory() {
- ldout(m_cct, 20) << this << " " << __func__ << dendl;
+ ldout(m_cct, 20) << dendl;
librados::ObjectWriteOperation op;
cls_client::dir_add_image(&op, m_image_name, m_image_id);
template<typename I>
void CreateRequest<I>::handle_add_image_to_directory(int r) {
- ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
+ ldout(m_cct, 20) << "r=" << r << dendl;
if (r < 0) {
lderr(m_cct) << "error adding image to directory: " << cpp_strerror(r)
return;
}
- ldout(m_cct, 20) << this << " " << __func__ << dendl;
+ ldout(m_cct, 20) << dendl;
librados::ObjectReadOperation op;
cls_client::get_all_features_start(&op);
template<typename I>
void CreateRequest<I>::handle_negotiate_features(int r) {
- ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
+ ldout(m_cct, 20) << "r=" << r << dendl;
uint64_t all_features;
if (r >= 0) {
template<typename I>
void CreateRequest<I>::create_image() {
- ldout(m_cct, 20) << this << " " << __func__ << dendl;
+ ldout(m_cct, 20) << dendl;
assert(m_data_pool.empty() || m_data_pool_id != -1);
ostringstream oss;
template<typename I>
void CreateRequest<I>::handle_create_image(int r) {
- ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
+ ldout(m_cct, 20) << "r=" << r << dendl;
if (r < 0) {
lderr(m_cct) << "error writing header: " << cpp_strerror(r) << dendl;
return;
}
- ldout(m_cct, 20) << this << " " << __func__ << dendl;
+ ldout(m_cct, 20) << dendl;
librados::ObjectWriteOperation op;
cls_client::set_stripe_unit_count(&op, m_stripe_unit, m_stripe_count);
template<typename I>
void CreateRequest<I>::handle_set_stripe_unit_count(int r) {
- ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
+ ldout(m_cct, 20) << "r=" << r << dendl;
if (r < 0) {
lderr(m_cct) << "error setting stripe unit/count: "
return;
}
- ldout(m_cct, 20) << this << " " << __func__ << dendl;
+ ldout(m_cct, 20) << dendl;
librados::ObjectWriteOperation op;
cls_client::object_map_resize(&op, Striper::get_num_objects(m_layout, m_size),
template<typename I>
void CreateRequest<I>::handle_object_map_resize(int r) {
- ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
+ ldout(m_cct, 20) << "r=" << r << dendl;
if (r < 0) {
lderr(m_cct) << "error creating initial object map: "
return;
}
- ldout(m_cct, 20) << this << " " << __func__ << dendl;
+ ldout(m_cct, 20) << dendl;
librados::ObjectReadOperation op;
cls_client::mirror_mode_get_start(&op);
template<typename I>
void CreateRequest<I>::handle_fetch_mirror_mode(int r) {
- ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
+ ldout(m_cct, 20) << "r=" << r << dendl;
if ((r < 0) && (r != -ENOENT)) {
lderr(m_cct) << "failed to retrieve mirror mode: " << cpp_strerror(r)
break;
default:
lderr(m_cct) << "Unknown mirror mode ("
- << static_cast<uint32_t>(mirror_mode_internal) << ")"
- << dendl;
+ << static_cast<uint32_t>(mirror_mode_internal) << ")" << dendl;
r = -EINVAL;
remove_object_map();
return;
template<typename I>
void CreateRequest<I>::journal_create() {
- ldout(m_cct, 20) << this << " " << __func__ << dendl;
+ ldout(m_cct, 20) << dendl;
using klass = CreateRequest<I>;
Context *ctx = create_context_callback<klass, &klass::handle_journal_create>(
template<typename I>
void CreateRequest<I>::handle_journal_create(int r) {
- ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
+ ldout(m_cct, 20) << "r=" << r << dendl;
if (r < 0) {
lderr(m_cct) << "error creating journal: " << cpp_strerror(r)
return;
}
- ldout(m_cct, 20) << this << " " << __func__ << dendl;
+ ldout(m_cct, 20) << dendl;
auto ctx = create_context_callback<
CreateRequest<I>, &CreateRequest<I>::handle_mirror_image_enable>(this);
auto req = mirror::EnableRequest<I>::create(m_ioctx, m_image_id,
template<typename I>
void CreateRequest<I>::handle_mirror_image_enable(int r) {
- ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
+ ldout(m_cct, 20) << "r=" << r << dendl;
if (r < 0) {
lderr(m_cct) << "cannot enable mirroring: " << cpp_strerror(r)
template<typename I>
void CreateRequest<I>::complete(int r) {
- ldout(m_cct, 20) << this << " " << __func__ << dendl;
+ ldout(m_cct, 20) << dendl;
if (r == 0) {
ldout(m_cct, 20) << "done." << dendl;
return;
}
- ldout(m_cct, 20) << this << " " <<__func__ << dendl;
+ ldout(m_cct, 20) << dendl;
using klass = CreateRequest<I>;
Context *ctx = create_context_callback<klass, &klass::handle_journal_remove>(
template<typename I>
void CreateRequest<I>::handle_journal_remove(int r) {
- ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
+ ldout(m_cct, 20) << "r=" << r << dendl;
if (r < 0) {
lderr(m_cct) << "error cleaning up journal after creation failed: "
return;
}
- ldout(m_cct, 20) << this << " " << __func__ << dendl;
+ ldout(m_cct, 20) << dendl;
using klass = CreateRequest<I>;
librados::AioCompletion *comp =
template<typename I>
void CreateRequest<I>::handle_remove_object_map(int r) {
- ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
+ ldout(m_cct, 20) << "r=" << r << dendl;
if (r < 0) {
lderr(m_cct) << "error cleaning up object map after creation failed: "
template<typename I>
void CreateRequest<I>::remove_header_object() {
- ldout(m_cct, 20) << this << " " << __func__ << dendl;
+ ldout(m_cct, 20) << dendl;
using klass = CreateRequest<I>;
librados::AioCompletion *comp =
template<typename I>
void CreateRequest<I>::handle_remove_header_object(int r) {
- ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
+ ldout(m_cct, 20) << "r=" << r << dendl;
if (r < 0) {
lderr(m_cct) << "error cleaning up image header after creation failed: "
template<typename I>
void CreateRequest<I>::remove_from_dir() {
- ldout(m_cct, 20) << this << " " << __func__ << dendl;
+ ldout(m_cct, 20) << dendl;
librados::ObjectWriteOperation op;
cls_client::dir_remove_image(&op, m_image_name, m_image_id);
template<typename I>
void CreateRequest<I>::handle_remove_from_dir(int r) {
- ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
+ ldout(m_cct, 20) << "r=" << r << dendl;
if (r < 0) {
lderr(m_cct) << "error cleaning up image from rbd_directory object "
template<typename I>
void CreateRequest<I>::remove_id_object() {
- ldout(m_cct, 20) << this << " " << __func__ << dendl;
+ ldout(m_cct, 20) << dendl;
using klass = CreateRequest<I>;
librados::AioCompletion *comp =
template<typename I>
void CreateRequest<I>::handle_remove_id_object(int r) {
- ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
+ ldout(m_cct, 20) << "r=" << r << dendl;
if (r < 0) {
lderr(m_cct) << "error cleaning up id object after creation failed: "