]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
crimson/osd/osd_operations/client_request_common: `PeeringState::needs_recovery()` 58823/head
authorXuehan Xu <xuxuehan@qianxin.com>
Fri, 24 May 2024 09:30:41 +0000 (17:30 +0800)
committerMatan Breizman <mbreizma@redhat.com>
Thu, 25 Jul 2024 07:31:30 +0000 (10:31 +0300)
commit93343286d7299ba45b3116361d63c39d69c18fbd
treeadf5320495df5f7433a636e73b3281c3aefa2e84
parent6f27a6d1df204ab9b34f7efe8ac621b081aa6ac1
crimson/osd/osd_operations/client_request_common: `PeeringState::needs_recovery()`
may fail if the object is under backfill

Meanwhile, set the correct version for backfill:
From Classic:
```
    if (is_degraded_or_backfilling_object(head)) {
      if (can_backoff && g_conf()->osd_backoff_on_degraded) {
        add_backoff(session, head, head);
        maybe_kick_recovery(head);
      }
```

```
void PrimaryLogPG::maybe_kick_recovery(
  const hobject_t &soid)
{
  eversion_t v;
  bool work_started = false;
  if (!recovery_state.get_missing_loc().needs_recovery(soid, &v))
    return;
```

Fixes: https://tracker.ceph.com/issues/66216
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
Signed-off-by: Matan Breizman <mbreizma@redhat.com>
(cherry picked from commit 5716f03eac0a9255fb2e8c402735453c2f72b56a)
src/crimson/osd/osd_operations/client_request_common.cc