if (snap)
snap_name = snap;
- asok_hook = new LibrbdAdminSocketHook(this);
-
memset(&header, 0, sizeof(header));
memset(&layout, 0, sizeof(layout));
assert(exclusive_lock == NULL);
assert(object_map == NULL);
assert(journal == NULL);
+ assert(asok_hook == NULL);
if (perfcounter) {
perf_stop();
delete op_work_queue;
delete aio_work_queue;
- delete asok_hook;
delete operations;
delete state;
}
}
apply_metadata_confs();
+ asok_hook = new LibrbdAdminSocketHook(this);
+
string pname = string("librbd-") + id + string("-") +
data_ctx.get_pool_name() + string("-") + name;
if (!snap_name.empty()) {
readahead.set_max_readahead_size(readahead_max_bytes);
}
+ void ImageCtx::shutdown() {
+ if (image_watcher != nullptr) {
+ unregister_watch();
+ }
+
+ delete asok_hook;
+ asok_hook = nullptr;
+ }
+
void ImageCtx::init_layout()
{
if (stripe_unit == 0 || stripe_count == 0) {
template <typename I>
void CloseRequest<I>::finish() {
- if (m_image_ctx->image_watcher != nullptr) {
- m_image_ctx->unregister_watch();
- }
-
+ m_image_ctx->shutdown();
m_on_finish->complete(m_error_result);
delete this;
}