From: Yin Congmin Date: Mon, 5 Jul 2021 07:43:56 +0000 (+0800) Subject: librbd/cache/pwl: supplement error handle X-Git-Tag: v16.2.7~50^2~44 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0cf849364867782f5fc06be211041757b601b858;p=ceph.git librbd/cache/pwl: supplement error handle add return after error handling and clean bdev before return trivial fix: <<<<<<< head on_finish->complete(-1); return; ======= on_finish->complete(r); return false; >>>>>>> 2cd9881116a (librbd/cache/pwl: supplement error handle) picked second patch Signed-off-by: Yin Congmin (cherry picked from commit 2cd9881116a47794051615fcf0a95a5e879ae7e6) --- diff --git a/src/librbd/cache/pwl/AbstractWriteLog.cc b/src/librbd/cache/pwl/AbstractWriteLog.cc index 5332424d42af..62fadc3331cf 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; } initialize_pool(on_finish, later); diff --git a/src/librbd/cache/pwl/ssd/WriteLog.cc b/src/librbd/cache/pwl/ssd/WriteLog.cc index 89ed6c3958b2..36a1f9357827 100644 --- a/src/librbd/cache/pwl/ssd/WriteLog.cc +++ b/src/librbd/cache/pwl/ssd/WriteLog.cc @@ -124,9 +124,10 @@ void 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); - return; + on_finish->complete(r); + return false; } m_cache_state->present = true; m_cache_state->clean = true; @@ -153,7 +154,10 @@ void 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;