]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/epm: detect transaction confict during rbm write using OOL
authorMyoungwon Oh <myoungwon.oh@samsung.com>
Tue, 12 Dec 2023 09:22:13 +0000 (18:22 +0900)
committerMyoungwon Oh <myoungwon.oh@samsung.com>
Fri, 5 Jan 2024 06:44:31 +0000 (15:44 +0900)
Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
src/crimson/os/seastore/extent_placement_manager.cc

index 0562d975337cf93ebb02c809d47dd1d279233907..3acd3dbd63def59ac6fed8df1624dd737a4cc1b8 100644 (file)
@@ -802,13 +802,15 @@ RandomBlockOolWriter::do_write(
     } else {
       bp = ex->get_bptr();
     }
-    return rbm->write(paddr + offset,
-      bp
-    ).handle_error(
-      alloc_write_iertr::pass_further{},
-      crimson::ct_error::assert_all{
-       "Invalid error when writing record"}
-    ).safe_then([&t, &ex, paddr, this, FNAME]() {
+    return trans_intr::make_interruptible(
+      rbm->write(paddr + offset,
+       bp
+      ).handle_error(
+       alloc_write_iertr::pass_further{},
+       crimson::ct_error::assert_all{
+         "Invalid error when writing record"}
+      )
+    ).si_then([this, &t, &ex, paddr, FNAME] {
       TRACET("ool extent written at {} -- {}",
             t, paddr, *ex);
       if (ex->is_initial_pending()) {