operations(new Operations<>(*this)),
exclusive_lock(nullptr), object_map(nullptr),
io_work_queue(nullptr), op_work_queue(nullptr),
- external_callback_completions(32),
event_socket_completions(32),
asok_hook(nullptr),
trace_endpoint("librbd")
}
ImageCtx::~ImageCtx() {
+ ceph_assert(config_watcher == nullptr);
ceph_assert(image_watcher == NULL);
ceph_assert(exclusive_lock == NULL);
ceph_assert(object_map == NULL);
bool thread_safe) {
ldout(cct, 20) << __func__ << dendl;
+ std::unique_lock image_locker(image_lock);
+
// reset settings back to global defaults
for (auto& key : config_overrides) {
std::string value;
}
}
+ image_locker.unlock();
+
#define ASSIGN_OPTION(param, type) \
param = config.get_val<type>("rbd_"#param)