mdcache->handle_conf_change(changed, *mdsmap);
mdlog->handle_conf_change(changed, *mdsmap);
purge_queue.handle_conf_change(changed, *mdsmap);
+ scrubstack->handle_conf_change(changed);
}));
}
void ScrubStack::purge_old_scrub_counters()
{
// "mds_scrub_stats_review_period" must be in number of days
- uint64_t mds_scrub_stats_review_period = g_conf().get_val<uint64_t>("mds_scrub_stats_review_period");
- auto review_period = ceph::make_timespan(mds_scrub_stats_review_period * 24 * 60 * 60);
+ auto review_period = ceph::make_timespan(_mds_scrub_stats_review_period * 24 * 60 * 60);
auto now = coarse_real_clock::now();
dout(20) << __func__ << " review_period:" << review_period << dendl;
in->mdcache->dispatch_request(mdr);
}
+
+void ScrubStack::handle_conf_change(const std::set<std::string>& changed)
+{
+ if (changed.count("mds_scrub_stats_review_period")) {
+ _mds_scrub_stats_review_period = g_conf().get_val<uint64_t>("mds_scrub_stats_review_period");
+ }
+}
clog(clog),
finisher(finisher_),
scrub_stack(member_offset(MDSCacheObject, item_scrub)),
- scrub_waiting(member_offset(MDSCacheObject, item_scrub)) {}
+ scrub_waiting(member_offset(MDSCacheObject, item_scrub)) {
+ _mds_scrub_stats_review_period = g_conf().get_val<uint64_t>("mds_scrub_stats_review_period");
+ }
~ScrubStack() {
ceph_assert(scrub_stack.empty());
ceph_assert(!scrubs_in_progress);
void init_scrub_counters(std::string_view path, std::string_view tag);
void purge_scrub_counters(std::string_view tag);
void purge_old_scrub_counters(); // on tick
+ void handle_conf_change(const std::set<std::string>& changed);
MDCache *mdcache;
// list of pending context completions for asynchronous scrub
// control operations.
std::vector<Context *> control_ctxs;
+
+ uint64_t _mds_scrub_stats_review_period = 1; // 1 day
};
#endif /* SCRUBSTACK_H_ */