Messenger::create(const entity_name_t& name,
const std::string& lname,
uint64_t nonce,
- bool is_fixed_cpu)
+ bool dispatch_only_on_this_shard)
{
return seastar::make_shared<SocketMessenger>(
- name, lname, nonce, is_fixed_cpu);
+ name, lname, nonce, dispatch_only_on_this_shard);
}
} // namespace crimson::net
create(const entity_name_t& name,
const std::string& lname,
uint64_t nonce,
- bool is_fixed_cpu);
+ bool dispatch_only_on_this_shard);
#ifdef UNIT_TESTS_BUILT
virtual void set_interceptor(Interceptor *) = 0;
ShardedServerSocket::ShardedServerSocket(
seastar::shard_id sid,
- bool is_fixed_cpu,
+ bool dispatch_only_on_primary_sid,
construct_tag)
- : primary_sid{sid}, is_fixed_cpu{is_fixed_cpu}
+ : primary_sid{sid}, dispatch_only_on_primary_sid{dispatch_only_on_primary_sid}
{
}
seastar::socket_address s_addr(addr.in4_addr());
seastar::listen_options lo;
lo.reuse_address = true;
- if (ss.is_fixed_cpu) {
+ if (ss.dispatch_only_on_primary_sid) {
lo.set_fixed_cpu(ss.primary_sid);
}
ss.listener = seastar::listen(s_addr, lo);
return ss.listener->accept(
).then([&ss](seastar::accept_result accept_result) {
#ifndef NDEBUG
- if (ss.is_fixed_cpu) {
+ if (ss.dispatch_only_on_primary_sid) {
// see seastar::listen_options::set_fixed_cpu()
ceph_assert_always(seastar::this_shard_id() == ss.primary_sid);
}
SocketRef _socket = std::make_unique<Socket>(
std::move(socket), Socket::side_t::acceptor,
peer_addr.get_port(), Socket::construct_tag{});
- logger().debug("ShardedServerSocket({})::accept(): "
- "accepted peer {}, socket {}, is_fixed = {}",
- ss.listen_addr, peer_addr, fmt::ptr(_socket), ss.is_fixed_cpu);
+ logger().debug("ShardedServerSocket({})::accept(): accepted peer {}, "
+ "socket {}, dispatch_only_on_primary_sid = {}",
+ ss.listen_addr, peer_addr, fmt::ptr(_socket),
+ ss.dispatch_only_on_primary_sid);
std::ignore = seastar::with_gate(
ss.shutdown_gate,
[socket=std::move(_socket), peer_addr, &ss]() mutable {
}
seastar::future<ShardedServerSocket*>
-ShardedServerSocket::create(bool is_fixed_cpu)
+ShardedServerSocket::create(bool dispatch_only_on_this_shard)
{
auto primary_sid = seastar::this_shard_id();
// start the sharded service: we should only construct/stop shards on #0
- return seastar::smp::submit_to(0, [primary_sid, is_fixed_cpu] {
+ return seastar::smp::submit_to(0, [primary_sid, dispatch_only_on_this_shard] {
auto service = std::make_unique<sharded_service_t>();
- return service->start(primary_sid, is_fixed_cpu, construct_tag{}
+ return service->start(
+ primary_sid, dispatch_only_on_this_shard, construct_tag{}
).then([service = std::move(service)]() mutable {
auto p_shard = service.get();
p_shard->local().service = std::move(service);
struct construct_tag {};
public:
- ShardedServerSocket(seastar::shard_id sid, bool is_fixed_cpu, construct_tag);
+ ShardedServerSocket(
+ seastar::shard_id sid,
+ bool dispatch_only_on_primary_sid,
+ construct_tag);
~ShardedServerSocket();
ShardedServerSocket& operator=(ShardedServerSocket&&) = delete;
ShardedServerSocket& operator=(const ShardedServerSocket&) = delete;
- bool is_fixed() const { return is_fixed_cpu; }
+ bool is_fixed_shard_dispatching() const {
+ return dispatch_only_on_primary_sid;
+ }
listen_ertr::future<> listen(entity_addr_t addr);
seastar::future<> shutdown_destroy();
- static seastar::future<ShardedServerSocket*> create(bool is_fixed_cpu);
+ static seastar::future<ShardedServerSocket*> create(
+ bool dispatch_only_on_this_shard);
private:
- // the fixed CPU if is_fixed_cpu is true
const seastar::shard_id primary_sid;
- const bool is_fixed_cpu;
+ /// XXX: Remove once all infrastructure uses multi-core messenger
+ const bool dispatch_only_on_primary_sid;
entity_addr_t listen_addr;
std::optional<seastar::server_socket> listener;
seastar::gate shutdown_gate;
SocketMessenger::SocketMessenger(const entity_name_t& myname,
const std::string& logic_name,
uint32_t nonce,
- bool is_fixed_cpu)
+ bool dispatch_only_on_this_shard)
: sid{seastar::this_shard_id()},
logic_name{logic_name},
nonce{nonce},
- is_fixed_cpu{is_fixed_cpu},
+ dispatch_only_on_sid{dispatch_only_on_this_shard},
my_name{myname}
{}
set_myaddrs(addrs);
return seastar::futurize_invoke([this] {
if (!listener) {
- return ShardedServerSocket::create(is_fixed_cpu
+ return ShardedServerSocket::create(dispatch_only_on_sid
).then([this] (auto _listener) {
listener = _listener;
});
return listener->accept([this](SocketRef _socket, entity_addr_t peer_addr) {
assert(get_myaddr().is_msgr2());
SocketFRef socket = seastar::make_foreign(std::move(_socket));
- if (listener->is_fixed()) {
+ if (listener->is_fixed_shard_dispatching()) {
return accept(std::move(socket), peer_addr);
} else {
return seastar::smp::submit_to(sid,
SocketMessenger(const entity_name_t& myname,
const std::string& logic_name,
uint32_t nonce,
- bool is_fixed_cpu);
+ bool dispatch_only_on_this_shard);
~SocketMessenger() override;
// Distinguish messengers with meaningful names for debugging
const std::string logic_name;
const uint32_t nonce;
- const bool is_fixed_cpu;
+ const bool dispatch_only_on_sid;
entity_name_t my_name;
entity_addrvec_t my_addrs;
logger().info("dispatch_sockets(): accepted at shard {}",
seastar::this_shard_id());
psf->server_socket_CPU = seastar::this_shard_id();
- if (psf->pss->is_fixed()) {
+ if (psf->pss->is_fixed_shard_dispatching()) {
ceph_assert_always(SERVER_CPU == seastar::this_shard_id());
}
SocketFRef socket = seastar::make_foreign(std::move(_socket));