From: Yingxin Cheng Date: Mon, 6 Jun 2022 03:15:37 +0000 (+0800) Subject: crimson/os/seastore: assert extent is not pending for io during rewrite X-Git-Tag: v18.0.0~733^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F46526%2Fhead;p=ceph.git crimson/os/seastore: assert extent is not pending for io during rewrite Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/cached_extent.h b/src/crimson/os/seastore/cached_extent.h index ba3110c675d5..ec4c9ba0d9cb 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 10185dbb34a4..0ca39ce991c8 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());