From: Xuehan Xu Date: Tue, 8 Sep 2020 04:36:41 +0000 (+0800) Subject: crimson/osd: add can_discard_op method for detecting "discardable" client requests X-Git-Tag: v16.1.0~1164^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F37003%2Fhead;p=ceph.git crimson/osd: add can_discard_op method for detecting "discardable" client requests Signed-off-by: Xuehan Xu --- diff --git a/src/crimson/osd/osd_operations/client_request.cc b/src/crimson/osd/osd_operations/client_request.cc index a6e6d1e682a7..a51cc7256d64 100644 --- a/src/crimson/osd/osd_operations/client_request.cc +++ b/src/crimson/osd/osd_operations/client_request.cc @@ -69,9 +69,7 @@ seastar::future<> ClientRequest::start() return with_blocking_future(osd.wait_for_pg(m->get_spg())); }).then([this, opref](Ref pgref) { PG &pg = *pgref; - if (__builtin_expect(m->get_map_epoch() - < pg.get_info().history.same_primary_since, - false)) { + if (pg.can_discard_op(*m)) { return osd.send_incremental_map(conn.get(), m->get_map_epoch()); } return with_blocking_future( diff --git a/src/crimson/osd/pg.cc b/src/crimson/osd/pg.cc index ca99a4b99966..3abe129c2fe4 100644 --- a/src/crimson/osd/pg.cc +++ b/src/crimson/osd/pg.cc @@ -993,4 +993,9 @@ void PG::on_change(ceph::os::Transaction &t) { backend->on_actingset_changed({ is_primary() }); } +bool PG::can_discard_op(const MOSDOp& m) const { + return __builtin_expect(m.get_map_epoch() + < peering_state.get_info().history.same_primary_since, false); +} + } diff --git a/src/crimson/osd/pg.h b/src/crimson/osd/pg.h index 7bfc477b0a29..7cdd054c33a3 100644 --- a/src/crimson/osd/pg.h +++ b/src/crimson/osd/pg.h @@ -672,6 +672,7 @@ private: template bool can_discard_replica_op(const MsgType& m) const; + bool can_discard_op(const MOSDOp& m) const; bool is_missing_object(const hobject_t& soid) const { return peering_state.get_pg_log().get_missing().get_items().count(soid); }