]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mds: handle mds_scrub_stats_review_period change via ScrubStack::handle_conf_change()
authorMilind Changire <mchangir@redhat.com>
Mon, 6 Feb 2023 07:57:57 +0000 (13:27 +0530)
committerMilind Changire <mchangir@redhat.com>
Wed, 28 Aug 2024 07:58:27 +0000 (13:28 +0530)
Signed-off-by: Milind Changire <mchangir@redhat.com>
src/mds/MDSRank.cc
src/mds/ScrubStack.cc
src/mds/ScrubStack.h

index bb059ca5a7d80306d60c0d57263bce6d534317ad..50c7175df804a6aad62428d9e1608421a709c06e 100644 (file)
@@ -4249,6 +4249,7 @@ void MDSRankDispatcher::handle_conf_change(const ConfigProxy& conf, const std::s
     mdcache->handle_conf_change(changed, *mdsmap);
     mdlog->handle_conf_change(changed, *mdsmap);
     purge_queue.handle_conf_change(changed, *mdsmap);
+    scrubstack->handle_conf_change(changed);
   }));
 }
 
index acca1d75561c1c139aceb9ca417ce800f5095a16..5a0b45c15e9fc5a61dd88b0f707216706970102d 100644 (file)
@@ -126,8 +126,7 @@ void ScrubStack::purge_scrub_counters(std::string_view tag)
 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;
@@ -1369,3 +1368,10 @@ void ScrubStack::uninline_data(CInode *in, Context *fin)
 
   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");
+  }
+}
index c921804ba254411056db4d25d4b275bcffa2af0f..4d0a0570d35ed6e17dc2fa1fb709e900bc179d50 100644 (file)
@@ -38,7 +38,9 @@ public:
     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);
@@ -110,6 +112,7 @@ public:
   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;
@@ -298,6 +301,8 @@ private:
   // 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_ */