]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: add can_discard_op method for detecting "discardable" client requests 37003/head
authorXuehan Xu <xxhdx1985126@gmail.com>
Tue, 8 Sep 2020 04:36:41 +0000 (12:36 +0800)
committerXuehan Xu <xxhdx1985126@gmail.com>
Tue, 8 Sep 2020 04:36:41 +0000 (12:36 +0800)
Signed-off-by: Xuehan Xu <xxhdx1985126@gmail.com>
src/crimson/osd/osd_operations/client_request.cc
src/crimson/osd/pg.cc
src/crimson/osd/pg.h

index a6e6d1e682a7ac6171de0094623941668aa69aeb..a51cc7256d640fc780e665c4be664a49d977c2bf 100644 (file)
@@ -69,9 +69,7 @@ seastar::future<> ClientRequest::start()
        return with_blocking_future(osd.wait_for_pg(m->get_spg()));
       }).then([this, opref](Ref<PG> 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(
index ca99a4b99966adb5ab396752d029e2f71ad29bba..3abe129c2fe410a5ea50c49703974986a54344ad 100644 (file)
@@ -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);
+}
+
 }
index 7bfc477b0a298366b3b68777229ec79c18c653c7..7cdd054c33a3701ca20748b43d59bef199aa1ad6 100644 (file)
@@ -672,6 +672,7 @@ private:
 
   template <typename MsgType>
   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);
   }