From bdab9331299d2dd7595221ef4622eaf65e8f4760 Mon Sep 17 00:00:00 2001 From: Yin Congmin Date: Thu, 16 Sep 2021 11:05:38 +0000 Subject: [PATCH] librbd/cache/pwl: Check the cache is clean Signed-off-by: Yin Congmin (cherry picked from commit 066b8a6d2ee091839b9b21ac89b8dfcebf8825cd) --- src/librbd/cache/pwl/AbstractWriteLog.cc | 16 +++++++++++++++- src/librbd/cache/pwl/AbstractWriteLog.h | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/librbd/cache/pwl/AbstractWriteLog.cc b/src/librbd/cache/pwl/AbstractWriteLog.cc index 89527c3f0a468..3da2d9a82c2d5 100644 --- a/src/librbd/cache/pwl/AbstractWriteLog.cc +++ b/src/librbd/cache/pwl/AbstractWriteLog.cc @@ -623,7 +623,7 @@ void AbstractWriteLog::shut_down(Context *on_finish) { } { std::lock_guard locker(m_lock); - ceph_assert(m_dirty_log_entries.size() == 0); + check_image_cache_state_clean(); m_wake_up_enabled = false; m_cache_state->clean = true; m_log_entries.clear(); @@ -2084,6 +2084,20 @@ bool AbstractWriteLog::can_retire_entry(std::shared_ptr log_ return log_entry->can_retire(); } +template +void AbstractWriteLog::check_image_cache_state_clean() { + ceph_assert(m_deferred_ios.empty()); + ceph_assert(m_ops_to_append.empty());; + ceph_assert(m_async_flush_ops == 0); + ceph_assert(m_async_append_ops == 0); + ceph_assert(m_dirty_log_entries.empty()); + ceph_assert(m_ops_to_flush.empty()); + ceph_assert(m_flush_ops_in_flight == 0); + ceph_assert(m_flush_bytes_in_flight == 0); + ceph_assert(m_bytes_dirty == 0); + ceph_assert(m_work_queue.empty()); +} + } // namespace pwl } // namespace cache } // namespace librbd diff --git a/src/librbd/cache/pwl/AbstractWriteLog.h b/src/librbd/cache/pwl/AbstractWriteLog.h index 128c00d99d82a..88e6470f12f7b 100644 --- a/src/librbd/cache/pwl/AbstractWriteLog.h +++ b/src/librbd/cache/pwl/AbstractWriteLog.h @@ -234,6 +234,7 @@ private: void pwl_init(Context *on_finish, pwl::DeferredContexts &later); void update_image_cache_state(Context *on_finish); + void check_image_cache_state_clean(); void flush_dirty_entries(Context *on_finish); bool can_flush_entry(const std::shared_ptr log_entry); -- 2.39.5