From 6d42ff4c7e6d3f2e5b97d3d4e16a4e1b1552af29 Mon Sep 17 00:00:00 2001 From: Myoungwon Oh Date: Tue, 12 Dec 2023 18:22:13 +0900 Subject: [PATCH] crimson/os/seastore/epm: detect transaction confict during rbm write using OOL Signed-off-by: Myoungwon Oh --- .../os/seastore/extent_placement_manager.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/crimson/os/seastore/extent_placement_manager.cc b/src/crimson/os/seastore/extent_placement_manager.cc index 0562d975337cf..3acd3dbd63def 100644 --- a/src/crimson/os/seastore/extent_placement_manager.cc +++ b/src/crimson/os/seastore/extent_placement_manager.cc @@ -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()) { -- 2.39.5