]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/net/io_handler: ctor add gate ctor with shard id
authorNitzan Mordechai <nmordech@redhat.com>
Wed, 28 Aug 2024 09:08:26 +0000 (09:08 +0000)
committerNitzan Mordechai <nmordech@redhat.com>
Thu, 5 Sep 2024 10:32:08 +0000 (10:32 +0000)
IOHandler::to_new_sid provides a mechanism to switch to a new core from the current one used.
This behavior is tricky for making sure that we keep the IOHandler::shard_states_t::gate instance to be used on the same core that it was created.
In order to resolve this, we should be able to construct Gated out of specified core_id (and not from this_shard_id).

See: https://github.com/ceph/ceph/pull/58986#discussion_r1733782952

Signed-off-by: NitzanMordhai <nmordech@redhat.com>
src/crimson/common/gated.h
src/crimson/net/io_handler.h

index d3978f2efdd86e1c8a8407e9573c1e79ad4a590c..28e3620e65489c49677c5edfb089ce92a869060f 100644 (file)
@@ -18,6 +18,7 @@ namespace crimson::common {
 class Gated {
  public:
   Gated() : sid(seastar::this_shard_id()) {}
+  Gated(const seastar::shard_id sid) : sid(sid) {}
   Gated(const Gated&) = delete;
   Gated& operator=(const Gated&) = delete;
   Gated(Gated&&) = default;
index 80dd953c65fcbeebc78bd6e559cd7625da36ab6a..5986fcb16ac28ae1368358d67e37068a2c263478 100644 (file)
@@ -255,7 +255,7 @@ public:
   class shard_states_t {
   public:
     shard_states_t(seastar::shard_id _sid, io_state_t state)
-      : sid{_sid}, io_state{state} {}
+      : sid{_sid}, io_state{state}, gate{_sid} {}
 
     seastar::shard_id get_shard_id() const {
       return sid;