Signed-off-by: Haomai Wang <haomai@xsky.com>
Worker *w = create_worker(cct, type, i);
workers.push_back(w);
}
+ cct->register_fork_watcher(this);
}
void NetworkStack::start()
}
};
-class NetworkStack {
+class NetworkStack : public CephContext::ForkWatcher {
std::string type;
unsigned num_workers = 0;
Spinlock pool_spin;
virtual void spawn_worker(unsigned i, std::function<void ()> &&) = 0;
virtual void join_worker(unsigned i) = 0;
+ virtual void handle_pre_fork() override {
+ stop();
+ }
+
+ virtual void handle_post_fork() override {
+ start();
+ }
+
private:
NetworkStack(const NetworkStack &);
NetworkStack& operator=(const NetworkStack &);