size_t maxlen);
CEPH_RBD_API int rbd_image_options_get_uint64(rbd_image_options_t opts,
int optname, uint64_t* optval);
+CEPH_RBD_API int rbd_image_options_is_set(rbd_image_options_t opts,
+ int optname, bool* is_set);
CEPH_RBD_API int rbd_image_options_unset(rbd_image_options_t opts, int optname);
CEPH_RBD_API void rbd_image_options_clear(rbd_image_options_t opts);
CEPH_RBD_API int rbd_image_options_is_empty(rbd_image_options_t opts);
int set(int optname, uint64_t optval);
int get(int optname, std::string* optval) const;
int get(int optname, uint64_t* optval) const;
+ int is_set(int optname, bool* is_set);
int unset(int optname);
void clear();
bool empty() const;
return 0;
}
+ int image_options_is_set(rbd_image_options_t opts, int optname,
+ bool* is_set)
+ {
+ if (IMAGE_OPTIONS_TYPE_MAPPING.find(optname) ==
+ IMAGE_OPTIONS_TYPE_MAPPING.end()) {
+ return -EINVAL;
+ }
+
+ image_options_ref* opts_ = static_cast<image_options_ref*>(opts);
+ *is_set = ((*opts_)->find(optname) != (*opts_)->end());
+ return 0;
+ }
+
int image_options_unset(rbd_image_options_t opts, int optname)
{
image_options_ref* opts_ = static_cast<image_options_ref*>(opts);
std::string* optval);
int image_options_get(rbd_image_options_t opts, int optname,
uint64_t* optval);
+ int image_options_is_set(rbd_image_options_t opts, int optname,
+ bool* is_set);
int image_options_unset(rbd_image_options_t opts, int optname);
void image_options_clear(rbd_image_options_t opts);
bool image_options_is_empty(rbd_image_options_t opts);
return librbd::image_options_get(opts, optname, optval);
}
+ int ImageOptions::is_set(int optname, bool* is_set)
+ {
+ return librbd::image_options_is_set(opts, optname, is_set);
+ }
+
int ImageOptions::unset(int optname)
{
return librbd::image_options_unset(opts, optname);
return librbd::image_options_get(opts, optname, optval);
}
+extern "C" int rbd_image_options_is_set(rbd_image_options_t opts, int optname,
+ bool* is_set)
+{
+ return librbd::image_options_is_set(opts, optname, is_set);
+}
+
extern "C" int rbd_image_options_unset(rbd_image_options_t opts, int optname)
{
return librbd::image_options_unset(opts, optname);
uint64_t stripe_count = 16;
rbd_image_options_t opts;
rbd_image_options_create(&opts);
+
+ bool is_set;
+ ASSERT_EQ(-EINVAL, rbd_image_options_is_set(opts, 12345, &is_set));
+ ASSERT_EQ(0, rbd_image_options_is_set(opts, RBD_IMAGE_OPTION_FORMAT,
+ &is_set));
+ ASSERT_FALSE(is_set);
+
ASSERT_EQ(0, rbd_image_options_set_uint64(opts, RBD_IMAGE_OPTION_FORMAT,
2));
ASSERT_EQ(0, rbd_image_options_set_uint64(opts, RBD_IMAGE_OPTION_FEATURES,
ASSERT_EQ(0, rbd_image_options_set_uint64(opts, RBD_IMAGE_OPTION_STRIPE_COUNT,
stripe_count));
+ ASSERT_EQ(0, rbd_image_options_is_set(opts, RBD_IMAGE_OPTION_FORMAT,
+ &is_set));
+ ASSERT_TRUE(is_set);
+
std::string parent_name = get_temp_image_name();
// make parent