]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/scrub: restore 'dump_scrub_reservations' functionality
authorRonen Friedman <rfriedma@redhat.com>
Sun, 28 Jan 2024 15:35:07 +0000 (09:35 -0600)
committerRonen Friedman <rfriedma@redhat.com>
Wed, 31 Jan 2024 07:29:19 +0000 (01:29 -0600)
As ScrubResources is no longer involved in remote reservations, some
of the data listed by 'dump_scrub_reservations' is now collected by
OsdScrub itself (prior to this change, OsdScrub just forwarded the
request to ScrubResources).

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
src/osd/OSD.cc
src/osd/scrubber/osd_scrub.cc
src/osd/scrubber/osd_scrub.h
src/osd/scrubber/osd_scrub_sched.h

index 61af98924c74d5b102e7588fb689b070af3454df..b0ff7883fabf193c15bef45bbf3107044e651180 100644 (file)
@@ -2893,7 +2893,7 @@ will start to track new ops received afterwards.";
     f->close_section();
   } else if (prefix == "dump_scrub_reservations") {
     f->open_object_section("scrub_reservations");
-    service.get_scrub_services().resource_bookkeeper().dump_scrub_reservations(f);
+    service.get_scrub_services().dump_scrub_reservations(f);
     f->close_section();
   } else if (prefix == "get_latest_osdmap") {
     get_latest_osdmap();
index b4e1ec8cef23fb2a6ad4cfa41250d002f6792778..a74e1ae5c30d7e753ebca440f8a7b80f8b94b180 100644 (file)
@@ -57,6 +57,14 @@ void OsdScrub::dump_scrubs(ceph::Formatter* f) const
   m_queue.dump_scrubs(f);
 }
 
+void OsdScrub::dump_scrub_reservations(ceph::Formatter* f) const
+{
+  m_resource_bookkeeper.dump_scrub_reservations(f);
+  f->open_array_section("remote_scrub_reservations");
+  m_osd_svc.get_scrub_reserver().dump(f);
+  f->close_section();
+}
+
 void OsdScrub::log_fwd(std::string_view text)
 {
   dout(20) << text << dendl;
index 9aca86ad798f45183e095b99a5d0b8318c3e7d52..64709cc7aab84e7a461963869c41e972e0320600 100644 (file)
@@ -51,6 +51,8 @@ class OsdScrub {
 
   void dump_scrubs(ceph::Formatter* f) const;  ///< fwd to the queue
 
+  void dump_scrub_reservations(ceph::Formatter* f) const;
+
   /**
    * on_config_change() (the refactored "OSD::sched_all_scrubs()")
    *
index 0eddb22ea7dd54d68df9a3d7a5b7f9f05aa039b6..95f1680d403df6d7c9d457d3dad0c0892c79d950 100644 (file)
@@ -108,6 +108,7 @@ ScrubQueue interfaces (main functions):
 // clang-format on
 
 #include <optional>
+#include "common/AsyncReserver.h"
 #include "utime.h"
 #include "osd/scrubber/scrub_job.h"
 #include "osd/PG.h"
@@ -135,6 +136,12 @@ class ScrubSchedListener {
    */
   virtual std::optional<PGLockWrapper> get_locked_pg(spg_t pgid) = 0;
 
+  /**
+   * allow access to the scrub_reserver, the AsyncReserver that keeps track
+   * of 'remote replica reservations'.
+   */
+  virtual AsyncReserver<spg_t, Finisher>& get_scrub_reserver() = 0;
+
   virtual ~ScrubSchedListener() {}
 };