Commit Graph

130892 Commits

Author SHA1 Message Date
Radosław Zarzyński
0ea3cc8f6a crimson/osd: migrate OperationThrottler to new tracking infra.
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 12:39:28 +02:00
Radosław Zarzyński
ca9d38e1ec crimson/osd: crimson/osd: drop blocking_future from PGActivationBlocker
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 12:39:28 +02:00
Radosław Zarzyński
409332f2f3 crimson/osd: crimson/osd: drop blocking_future from PGMap
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 12:39:28 +02:00
Radosław Zarzyński
f693fabfe8 crimson/osd: drop blocking_future from OSDMapGate
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 12:39:28 +02:00
Radosław Zarzyński
cd9d6bc2b5 crimson: bring the WaitBarrier tracking
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 12:38:54 +02:00
Radosław Zarzyński
013661412b crimson: move PipelineStageIT::enter() dispatch to compile-time
The optimization isn't the goal (but rather a side effect). The
reason behind this change is to let pipeline stages define exit
barriers incorporating `OpT`-dependant `Triggers` to track blocking
that happens on the barriers.

Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:32 +02:00
Radosław Zarzyński
75a9cbbc74 crimson/os: add junction between OSD's ops and Seastore's OrderingHandle.
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:32 +02:00
Radosław Zarzyński
b7e2b11595 crimson/osd: migrate AggregateBlocker-related ops to new tracking infra
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:32 +02:00
Radosław Zarzyński
ee759133fa crimson/osd: bring AggregateBlockingEvent.
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:32 +02:00
Radosław Zarzyński
232ea2cf45 crimson/osd: migrate PeeringEvent to new tracking infra, part 2
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:32 +02:00
Radosław Zarzyński
df5e76a261 crimson/osd: add BlockingEvent-aware variant of OSD::get_or_create_pg
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:32 +02:00
Radosław Zarzyński
69e465b2cf crimson/osd: migrate InternalClientRequest to new tracking infra.
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:32 +02:00
Radosław Zarzyński
9498b440e6 crimson/osd: migrate RecoverySubRequest to new tracking infra.
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:32 +02:00
Radosław Zarzyński
313337983f crimson/osd: migrate RepRequest to new tracking infra
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
11ed546e10 crimson/osd: migrate PGAdvanceMap to new tracking infra.
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
6ac63fc43d crimson/osd: reduce unnecessary indentation level in PGAdvanceMap::start()
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
e2fc6f9a93 crimson/osd: migrate PeeringEvent to new tracking infra.
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
0fa5d9a749 crimson/osd: migrate BackgroundRecovery to new tracking infra.
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
096e8c9035 crimson/osd: migrate BackfillRecoveryPipeline to new tracking infra.
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
5c64306487 crimson/osd: CompoundPeeringRequest tracks its start and completion too
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
d3d7745c3a crimson/osd: migrate CompoundPeeringRequest into new tracking infra
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
a9ce8d81c8 crimson/osd: move SubOpBlocker from .cc to header
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
8eedc17097 crimson/osd: PGActivationBlocker does support new tracking infra
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
1c1663d731 crimson/osd: dissect PG::WaitForActiveBlocker into PGActivationBlocker
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
cc71d8afe9 crimson/osd: PGMap blocker does support new tracking infra
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
89493f3da1 crimson/osd: make PhaseOperationT able to deal with interruptors
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
1c760fcb58 crimson/osd: pg_map.h doesn't pull pg.h anymore
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
633f45ac3b crimson/osd: convert entire ClientRequest to the new infra
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
a0b7861a31 crimson/osd: slightly optimize OperationRegistryT::do_register()
There is no need to call the virtual op::get_type() twice.

Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
11f0814dcb crimson/osd: fix an assertion failure in Formatter when dumping ops
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
9248607186 crimson/osd: implement dump_ops_in_flight
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
7e12e9a7b5 crimson/osd: track start and completion of ClientRequest
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
cd46a27393 crimson/osd: bring boilerplate for LTTng-based external tracking backend
At the moment it's mostly for verification & demonstration purposes.

Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
59fbd2cde0 crimson/osd: drop forward declaration of OSDMap osd.h
Having it doesn't make sense as we already include the header.

Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
f5ce518f1e crimson/osd: add registry of external handlers of tracking events
This commit intentionally fails the build. It does that to verify
the static assertion on per-op-type lookup of event registry.

The concrete assertion is the one about `ClientRequest` as we
already moved two of its blocker into the new op tracking infra.

Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
33e4590d43 crimson/osd: switch one OSDMapGate of ClientRequest to new blocking infra
This time the demo of `BlockerT::BlockingEvent::TriggerI` which
is supposed to handle situations where:

1) `BlockerT` is separated from `TrackableOperationT` by many
intermediaries while
2) we don't want to templatize them all.

Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
3e99e526c0 crimson/osd: switch a stage of ClientRequest to new blocking infra
This is a debut of the new blocking & tracking infrastructure
using the type-aware `BlockerT::BlockingEvent::Trigger<T>`.

Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
c86c231dcc crimson/osd: introduce PhasedOperationT to deduplicate PipelineHandles
This new class in the hierarchy will be handy when it will come to
introduce helpers for deailing with entering a pipeline stage.

Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
2676e395ac crimson/osd: switch all OSD operations to TrackableOperationT
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
ae08ac0278 crimson/osd: get rid of unnecessary private in ClientRequest
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
5c83589ae5 crimson/osd: switch all ClientRequest-related pipeline stages to the new infra
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
f5292e6f81 crimson/osd: pipeline stage classes can be bases for CRTP now
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
61147363c2 crimson/osd: pipeline stage classes derive from BlockerT now
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
2dc3770f7a crimson/osd: document OperationThrottler's behavior towards op's blocker list.
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
846ed08359 crimson/osd: simplify OperationThrottler::with_throttle()
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
f4a039278f crimson/osd: move with_blocking_future from Operation to OperationT.
Buildability of this commit proves all users of `with_blocking_future()`
have the concrete operation type which is necessary on the the way
to the compile-time defined op's blocker registry.

Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
332a0d4de0 crimson/os/seastore: migrate OrderingHandle away from blocking_future
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
e054d79fe9 crimson/osd: OperationThrottler derives from BlockerT instead of Blocker.
One another step closer. See the previous' commit description.

Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
c35c49908c crimson/osd: make OperationThrottler aware about exact type of operation
This is a step towards making op's blocker registry static and
compile-time checked.

Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00
Radosław Zarzyński
6bafcac240 crimson/osd: make the OperationThrottler::with_throttle private
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
2022-05-05 04:06:31 +02:00