From: Samuel Just Date: Wed, 13 Dec 2023 20:43:35 +0000 (-0800) Subject: crimson/osd/pg: rollback obc unconditionally before error log X-Git-Tag: v19.3.0~347^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=999845c25121cf8d15fdce6b23ee5b3c4b584a9b;p=ceph-ci.git crimson/osd/pg: rollback obc unconditionally before error log If we're recording an error to the log, the write definitionally did not happen. Rollback the obc regardless of the specific error code. Introduced: 1d98e8da Fixes: https://tracker.ceph.com/issues/63820 Signed-off-by: Samuel Just --- diff --git a/src/crimson/osd/pg.cc b/src/crimson/osd/pg.cc index 00592eb8347..a0b74ff9b21 100644 --- a/src/crimson/osd/pg.cc +++ b/src/crimson/osd/pg.cc @@ -938,14 +938,8 @@ PG::do_osd_ops_execute( [this, error_func_ptr, rollbacker, failure_func_ptr] (const std::error_code& e) mutable { - PG::interruptible_future<> maybe_rollback_fut = seastar::now(); ceph_tid_t rep_tid = shard_services.get_tid(); - - if (e.value() == ENOENT) { - maybe_rollback_fut = rollbacker.rollback_obc_if_modified(e); - } - - return maybe_rollback_fut.then_interruptible( + return rollbacker.rollback_obc_if_modified(e).then_interruptible( [error_func_ptr, e, rep_tid, failure_func_ptr] { // record error log return (*error_func_ptr)(e, rep_tid).then(