// Shutdown PGs
{
RWLock::RLocker l(pg_map_lock);
- for (ceph::unordered_map<spg_t, PG*>::iterator p = pg_map.begin();
- p != pg_map.end();
- ++p) {
- dout(20) << " kicking pg " << p->first << dendl;
- p->second->lock();
- p->second->on_shutdown();
- p->second->unlock();
- p->second->osr->flush();
+ for (auto& p : pg_map) {
+ p.second->shutdown();
}
}
void get_pg_stats(std::function<void(const pg_stat_t&, epoch_t lec)> f);
+ virtual void shutdown() = 0;
+
virtual void do_request(
OpRequestRef& op,
ThreadPool::TPHandle &handle
virtual void on_change(ObjectStore::Transaction *t) = 0;
virtual void on_activate() = 0;
virtual void on_flushed() = 0;
- virtual void on_shutdown() = 0;
virtual void check_blacklisted_watchers() = 0;
friend ostream& operator<<(ostream& out, const PG& pg);
}
}
+void PrimaryLogPG::shutdown()
+{
+ lock();
+ on_shutdown();
+ unlock();
+ osr->flush();
+}
+
void PrimaryLogPG::on_shutdown()
{
- dout(10) << "on_shutdown" << dendl;
+ dout(10) << __func__ << dendl;
// remove from queues
osd->peering_wq.dequeue(this);
void on_activate() override;
void on_flushed() override;
void on_removal(ObjectStore::Transaction *t) override;
- void on_shutdown() override;
+ void shutdown() override;
+ void on_shutdown();
bool check_failsafe_full(ostream &ss) override;
bool check_osdmap_full(const set<pg_shard_t> &missing_on) override;
int rep_repair_primary_object(const hobject_t& soid, OpRequestRef op);