]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd/osd_operations/client_request_common: add version and reqid logs
authorMatan Breizman <mbreizma@redhat.com>
Sun, 14 Apr 2024 14:05:17 +0000 (14:05 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Tue, 16 Apr 2024 14:43:46 +0000 (14:43 +0000)
Signed-off-by: Matan Breizman <mbreizma@redhat.com>
src/crimson/osd/osd_operations/client_request.cc
src/crimson/osd/osd_operations/client_request_common.cc
src/crimson/osd/osd_operations/client_request_common.h
src/crimson/osd/osd_operations/internal_client_request.cc

index e897d552792d231de79a8de4333863128b455626..6e154f5c76e975c401b3ebf7d8b0377f13a0d076 100644 (file)
@@ -251,7 +251,8 @@ ClientRequest::process_op(
   co_await ihref.enter_stage<interruptor>(
     client_pp(*pg).recover_missing, *this
   );
-  co_await recover_missings(pg, m->get_hobj(), snaps_need_to_recover());
+  co_await recover_missings(pg, m->get_hobj(),
+                            snaps_need_to_recover(), m->get_reqid());
 
   DEBUGDPP("{}.{}: checking already_complete",
           *pg, *this, this_instance_id);
index fb919a1b07cfd14b384383978977537d3c0b6216..7865b4d7a1b60e08737a52d757990c269bce1729 100644 (file)
@@ -19,7 +19,8 @@ InterruptibleOperation::template interruptible_future<>
 CommonClientRequest::recover_missings(
   Ref<PG> &pg,
   const hobject_t& soid,
-  std::set<snapid_t> &&snaps)
+  std::set<snapid_t> &&snaps,
+  const osd_reqid_t& reqid)
 {
   LOG_PREFIX(CommonClientRequest::recover_missings);
   if (!pg->is_primary()) {
@@ -28,17 +29,17 @@ CommonClientRequest::recover_missings(
     return seastar::now();
   }
   return do_recover_missing(
-    pg, soid.get_head()
-  ).then_interruptible([snaps=std::move(snaps), pg, soid]() mutable {
+    pg, soid.get_head(), reqid
+  ).then_interruptible([snaps=std::move(snaps), pg, soid, reqid]() mutable {
     return pg->obc_loader.with_obc<RWState::RWREAD>(
       soid.get_head(),
-      [snaps=std::move(snaps), pg, soid](auto head, auto) mutable {
+      [snaps=std::move(snaps), pg, soid, reqid](auto head, auto) mutable {
       return seastar::do_with(
        std::move(snaps),
-       [pg, soid, head](auto &snaps) mutable {
+       [pg, soid, head, reqid](auto &snaps) mutable {
        return InterruptibleOperation::interruptor::do_for_each(
          snaps,
-         [pg, soid, head](auto &snap) mutable ->
+         [pg, soid, head, reqid](auto &snap) mutable ->
          InterruptibleOperation::template interruptible_future<> {
          auto coid = head->obs.oi.soid;
          coid.snap = snap;
@@ -50,7 +51,7 @@ CommonClientRequest::recover_missings(
           * we skip the oid as there is no corresponding clone to recover.
           * See https://tracker.ceph.com/issues/63821 */
          if (oid) {
-           return do_recover_missing(pg, *oid);
+           return do_recover_missing(pg, *oid, reqid);
          } else {
            return seastar::now();
          }
@@ -64,19 +65,29 @@ CommonClientRequest::recover_missings(
 
 typename InterruptibleOperation::template interruptible_future<>
 CommonClientRequest::do_recover_missing(
-  Ref<PG>& pg, const hobject_t& soid)
+  Ref<PG>& pg,
+  const hobject_t& soid,
+  const osd_reqid_t& reqid)
 {
   eversion_t ver;
   assert(pg->is_primary());
-  logger().debug("{} check for recovery, {}", __func__, soid);
+  logger().debug("{} reqid {} check for recovery, {}",
+                 __func__, reqid, soid);
   if (!pg->is_unreadable_object(soid, &ver) &&
       !pg->is_degraded_or_backfilling_object(soid)) {
+    logger().debug("{} reqid {} nothing to recover {}",
+                   __func__, reqid, soid);
     return seastar::now();
   }
-  logger().debug("{} need to wait for recovery, {}", __func__, soid);
+  logger().debug("{} reqid {} need to wait for recovery, {} version {}",
+                 __func__, reqid, soid, ver);
   if (pg->get_recovery_backend()->is_recovering(soid)) {
+    logger().debug("{} reqid {} object {} version {}, already recovering",
+                   __func__, reqid, soid, ver);
     return pg->get_recovery_backend()->get_recovering(soid).wait_for_recovered();
   } else {
+    logger().debug("{} reqid {} object {} version {}, starting recovery",
+                   __func__, reqid, soid, ver);
     auto [op, fut] =
       pg->get_shard_services().start_operation<UrgentRecovery>(
         soid, ver, pg, pg->get_shard_services(), pg->get_osdmap_epoch());
index 98ee1ef123bd570dcdb1f9db99987cea736fa4ed..738f1b1f7bb18dec7e45c5ed8832a50320f7b339 100644 (file)
@@ -15,10 +15,14 @@ struct CommonClientRequest {
   recover_missings(
     Ref<PG> &pg,
     const hobject_t& soid,
-    std::set<snapid_t> &&snaps);
+    std::set<snapid_t> &&snaps,
+    const osd_reqid_t& reqid);
 
   static InterruptibleOperation::template interruptible_future<>
-  do_recover_missing(Ref<PG>& pg, const hobject_t& soid);
+  do_recover_missing(
+    Ref<PG>& pg,
+    const hobject_t& soid,
+    const osd_reqid_t& reqid);
 
   static bool should_abort_request(
     const crimson::Operation& op, std::exception_ptr eptr);
index 527d982f1e9b5edb1a292d5c713fda4082458108..7be582ff2761976b7580ea62bd213766e3616c70 100644 (file)
@@ -69,7 +69,7 @@ seastar::future<> InternalClientRequest::start()
           return enter_stage<interruptor>(
             client_pp().recover_missing);
         }).then_interruptible([this] {
-          return do_recover_missing(pg, get_target_oid());
+          return do_recover_missing(pg, get_target_oid(), osd_reqid_t());
         }).then_interruptible([this] {
           return enter_stage<interruptor>(
             client_pp().get_obc);