From: Samuel Just Date: Wed, 25 Oct 2023 02:55:28 +0000 (-0700) Subject: crimson/osd: explicitly instantiate interrupt_cond X-Git-Tag: v19.3.0~296^2~23 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0e8663b93a236d932c0d3f56f291677e38356e84;p=ceph.git crimson/osd: explicitly instantiate interrupt_cond Solves an FTBFS when using with_interruption from pg_commands.cc: In file included from ../src/crimson/admin/pg_commands.cc:14: ../src/crimson/common/interruptible_future.h:135:46: error: redefinition of ‘bool __tls_guard’ 135 | thread_local interrupt_cond_t interrupt_cond; | ^~~~~~~~~~~~~~ In file included from ../src/common/TrackedOp.h:18, from ../src/os/ObjectStore.h:25, from ../src/osd/PGLog.h:23, from ../src/osd/PeeringState.h:19, from ../src/crimson/osd/shard_services.h:17, from ../src/crimson/osd/pg_shard_manager.h:10, from ../src/crimson/osd/osd.h:23, from ../src/crimson/admin/pg_commands.cc:16: ../src/common/StackStringStream.h:188:36: note: ‘bool __tls_guard’ previously declared here 188 | inline static thread_local Cache cache; This matches what we already do with interrupt_cond_t. Signed-off-by: Samuel Just --- diff --git a/src/crimson/common/interruptible_future.h b/src/crimson/common/interruptible_future.h index 6ed11088e1a7..857704dab378 100644 --- a/src/crimson/common/interruptible_future.h +++ b/src/crimson/common/interruptible_future.h @@ -53,6 +53,10 @@ namespace crimson::os::seastore { class TransactionConflictCondition; } +namespace crimson::osd { + class IOInterruptCondition; +} + // GCC tries to instantiate // seastar::lw_shared_ptr. // but we *may* not have the definition of TransactionConflictCondition at this moment, @@ -136,6 +140,9 @@ struct interrupt_cond_t { template thread_local interrupt_cond_t interrupt_cond; +extern template thread_local interrupt_cond_t +interrupt_cond; + extern template thread_local interrupt_cond_t interrupt_cond; diff --git a/src/crimson/osd/pg_interval_interrupt_condition.cc b/src/crimson/osd/pg_interval_interrupt_condition.cc index 36243b825752..b72044d4e57e 100644 --- a/src/crimson/osd/pg_interval_interrupt_condition.cc +++ b/src/crimson/osd/pg_interval_interrupt_condition.cc @@ -8,6 +8,11 @@ SET_SUBSYS(osd); +namespace crimson::interruptible { +template thread_local interrupt_cond_t +interrupt_cond; +} + namespace crimson::osd { IOInterruptCondition::IOInterruptCondition(Ref& pg)