]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore: assert extent is not pending for io during rewrite 46526/head
authorYingxin Cheng <yingxin.cheng@intel.com>
Mon, 6 Jun 2022 03:15:37 +0000 (11:15 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Mon, 6 Jun 2022 03:58:01 +0000 (11:58 +0800)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/os/seastore/cached_extent.h
src/crimson/os/seastore/transaction_manager.cc

index ba3110c675d59dc0c00fa766aa3361486e28c7fc..ec4c9ba0d9cb9c45311cc421c62487c766aa857d 100644 (file)
@@ -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());
index 10185dbb34a4035940833d4a6db2a0fc20c21064..0ca39ce991c8215862ef81c19baa1cc544ce8741 100644 (file)
@@ -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());