From: Chunmei Liu Date: Wed, 16 Mar 2022 03:35:58 +0000 (-0700) Subject: crimson: fix set_reply_versions missing X-Git-Tag: v18.0.0~1244^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=03db7f0c7b8bbad4b40b6d70da4a2d0bb184af4b;p=ceph.git crimson: fix set_reply_versions missing Signed-off-by: Chunmei Liu --- diff --git a/src/crimson/osd/pg.cc b/src/crimson/osd/pg.cc index 736e512c37033..021d41b1cfefe 100644 --- a/src/crimson/osd/pg.cc +++ b/src/crimson/osd/pg.cc @@ -750,10 +750,10 @@ PG::do_osd_ops( } return do_osd_ops_execute>( seastar::make_lw_shared( - Ref{this}, std::move(obc), op_info, *m), + Ref{this}, obc, op_info, *m), m->ops, op_info, - [this, m, rvec = op_info.allows_returnvec()] { + [this, m, obc, rvec = op_info.allows_returnvec()] { // TODO: should stop at the first op which returns a negative retval, // cmpext uses it for returning the index of first unmatched byte int result = m->ops.empty() ? 0 : m->ops.back().rval.code; @@ -770,6 +770,13 @@ PG::do_osd_ops( "do_osd_ops: {} - object {} sending reply", *m, m->get_hobj()); + if (obc->obs.exists) { + reply->set_reply_versions(peering_state.get_info().last_update, + obc->obs.oi.user_version); + } else { + reply->set_reply_versions(peering_state.get_info().last_update, + peering_state.get_info().last_user_version); + } return do_osd_ops_iertr::make_ready_future>( std::move(reply)); }, @@ -816,6 +823,9 @@ PG::interruptible_future> PG::do_pg_ops(Ref m) auto reply = crimson::make_message(m.get(), 0, get_osdmap_epoch(), CEPH_OSD_FLAG_ACK | CEPH_OSD_FLAG_ONDISK, false); + reply->claim_op_out_data(m->ops); + reply->set_reply_versions(peering_state.get_info().last_update, + peering_state.get_info().last_user_version); return seastar::make_ready_future>(std::move(reply)); }).handle_exception_type_interruptible([=](const crimson::osd::error& e) { auto reply = crimson::make_message(