From e569319aa3ad7bd483d8b816360f810f23ed4a11 Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Mon, 6 Jun 2022 11:15:37 +0800 Subject: [PATCH] crimson/os/seastore: assert extent is not pending for io during rewrite Signed-off-by: Yingxin Cheng --- src/crimson/os/seastore/cached_extent.h | 4 ++++ src/crimson/os/seastore/transaction_manager.cc | 1 + 2 files changed, 5 insertions(+) diff --git a/src/crimson/os/seastore/cached_extent.h b/src/crimson/os/seastore/cached_extent.h index ba3110c675d59..ec4c9ba0d9cb9 100644 --- a/src/crimson/os/seastore/cached_extent.h +++ b/src/crimson/os/seastore/cached_extent.h @@ -317,6 +317,10 @@ public: return get_type() == extent_types_t::RETIRED_PLACEHOLDER; } + bool is_pending_io() const { + return !!io_wait_promise; + } + /// Return journal location of oldest relevant delta, only valid while DIRTY auto get_dirty_from() const { ceph_assert(is_dirty()); diff --git a/src/crimson/os/seastore/transaction_manager.cc b/src/crimson/os/seastore/transaction_manager.cc index 10185dbb34a40..0ca39ce991c82 100644 --- a/src/crimson/os/seastore/transaction_manager.cc +++ b/src/crimson/os/seastore/transaction_manager.cc @@ -508,6 +508,7 @@ TransactionManager::rewrite_extent_ret TransactionManager::rewrite_extent( return rewrite_extent_iertr::now(); } extent = updated; + ceph_assert(!extent->is_pending_io()); } t.get_rewrite_version_stats().increment(extent->get_version()); -- 2.39.5