]> git.proxmox.com Git - ceph.git/blob - ceph/src/crimson/osd/pg_activation_blocker.cc
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / crimson / osd / pg_activation_blocker.cc
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:nil -*-
2 // vim: ts=8 sw=2 smarttab expandtab
3
4 #include "crimson/osd/pg.h"
5 #include "crimson/osd/pg_activation_blocker.h"
6
7 namespace crimson::osd {
8
9 void PGActivationBlocker::dump_detail(Formatter *f) const
10 {
11 f->dump_stream("pgid") << pg->get_pgid();
12 }
13
14 void PGActivationBlocker::unblock()
15 {
16 p.set_value();
17 p = {};
18 }
19
20 seastar::future<>
21 PGActivationBlocker::wait(PGActivationBlocker::BlockingEvent::TriggerI&& trigger)
22 {
23 if (pg->get_peering_state().is_active()) {
24 return seastar::now();
25 } else {
26 return trigger.maybe_record_blocking(p.get_shared_future(), *this);
27 }
28 }
29
30 seastar::future<> PGActivationBlocker::stop()
31 {
32 p.set_exception(crimson::common::system_shutdown_exception());
33 return seastar::now();
34 }
35
36 } // namespace crimson::osd