From 2cd9881116a47794051615fcf0a95a5e879ae7e6 Mon Sep 17 00:00:00 2001 From: Yin Congmin Date: Mon, 5 Jul 2021 15:43:56 +0800 Subject: [PATCH] librbd/cache/pwl: supplement error handle add return after error handling and clean bdev before return Signed-off-by: Yin Congmin --- src/librbd/cache/pwl/AbstractWriteLog.cc | 1 + src/librbd/cache/pwl/ssd/WriteLog.cc | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/librbd/cache/pwl/AbstractWriteLog.cc b/src/librbd/cache/pwl/AbstractWriteLog.cc index 884e6065706..1284cc48666 100644 --- a/src/librbd/cache/pwl/AbstractWriteLog.cc +++ b/src/librbd/cache/pwl/AbstractWriteLog.cc @@ -528,6 +528,7 @@ void AbstractWriteLog::pwl_init(Context *on_finish, DeferredContexts &later) (access(m_log_pool_name.c_str(), F_OK) != 0)) { ldout(cct, 5) << "Can't find the existed pool file " << m_log_pool_name << dendl; on_finish->complete(-errno); + return; } bool succeeded = initialize_pool(on_finish, later); diff --git a/src/librbd/cache/pwl/ssd/WriteLog.cc b/src/librbd/cache/pwl/ssd/WriteLog.cc index 1b76ddc8f59..9b7cfc9fc74 100644 --- a/src/librbd/cache/pwl/ssd/WriteLog.cc +++ b/src/librbd/cache/pwl/ssd/WriteLog.cc @@ -124,8 +124,9 @@ bool WriteLog::initialize_pool(Context *on_finish, nullptr, nullptr, nullptr); int r = bdev->open(this->m_log_pool_name); if (r < 0) { + lderr(m_image_ctx.cct) << "fail to open block device." << dendl; delete bdev; - on_finish->complete(-1); + on_finish->complete(r); return false; } m_cache_state->present = true; @@ -156,7 +157,10 @@ bool WriteLog::initialize_pool(Context *on_finish, if (r != 0) { lderr(m_image_ctx.cct) << "failed to initialize pool (" << this->m_log_pool_name << ")" << dendl; + bdev->close(); + delete bdev; on_finish->complete(r); + return false; } } else { m_cache_state->present = true; -- 2.47.3