From: Samuel Just Date: Fri, 20 Sep 2024 02:39:08 +0000 (-0700) Subject: crimson: PG::submit_error_log returns eversion_t rather than optional X-Git-Tag: v20.0.0~812^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=7a826eb86c423e895345557632091a934f7c7d7e;p=ceph.git crimson: PG::submit_error_log returns eversion_t rather than optional It seems like the motivation here was to allow do_osd_ops_execute to communicate that it didn't submit an error log by making maybe_submit_error_log a std::optional. However, submit_error_log itself always returns a version. Fix submit_error_log and compensate in do_osd_ops_execute. Signed-off-by: Samuel Just --- diff --git a/src/crimson/osd/pg.cc b/src/crimson/osd/pg.cc index 8ab4e4e899b8..26d1fa883bbc 100644 --- a/src/crimson/osd/pg.cc +++ b/src/crimson/osd/pg.cc @@ -1122,7 +1122,11 @@ PG::do_osd_ops_execute( if constexpr (!std::is_same_v) { if(op_info.may_write()) { maybe_submit_error_log = - submit_error_log(m, op_info, obc, e, rep_tid); + submit_error_log( + m, op_info, obc, e, rep_tid + ).then_interruptible([](auto &&e) { + return std::make_optional(std::move(e)); + }); } } return maybe_submit_error_log.then_interruptible( @@ -1175,7 +1179,7 @@ PG::interruptible_future<> PG::complete_error_log(const ceph_tid_t& rep_tid, return result; } -PG::interruptible_future> PG::submit_error_log( +PG::interruptible_future PG::submit_error_log( Ref m, const OpInfo &op_info, ObjectContextRef obc, @@ -1241,7 +1245,7 @@ PG::interruptible_future> PG::submit_error_log( get_collection_ref(), std::move(t) ).then([this] { peering_state.update_trim_to(); - return seastar::make_ready_future>(projected_last_update); + return seastar::make_ready_future(projected_last_update); }); }); }); diff --git a/src/crimson/osd/pg.h b/src/crimson/osd/pg.h index d8bbc56abcc4..5bd5c3aeff84 100644 --- a/src/crimson/osd/pg.h +++ b/src/crimson/osd/pg.h @@ -621,7 +621,7 @@ public: void dump_primary(Formatter*); interruptible_future<> complete_error_log(const ceph_tid_t& rep_tid, const eversion_t& version); - interruptible_future> submit_error_log( + interruptible_future submit_error_log( Ref m, const OpInfo &op_info, ObjectContextRef obc,