]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
osd/PG: discover missing objects when an OSD peers and PG is degraded 27751/head
authorJonas Jelten <jj@stusta.net>
Mon, 1 Apr 2019 10:28:09 +0000 (12:28 +0200)
committerAshish Singh <assingh@redhat.com>
Wed, 24 Apr 2019 13:17:36 +0000 (18:47 +0530)
commit3a06a508c5f69f9ee9a5073620f9c2b5ae9c6bb7
tree532d21d05e6022466b22dfe5ad92272d7da97051
parent1436006594665279fe734b4c15d7e08c13ebd777
osd/PG: discover missing objects when an OSD peers and PG is degraded

When a PG is remapped from OSD `a` to OSD `b`, the objects are
backfilled. When OSD `a` is restarted, objects become degraded
as `a` is no longer queried or considered as a backfill source.

As the PG is degraded, `PG::discover_all_missing` is not called
when a candidate OSD peers with the primary: The PG is already
active, thus `PG::activate` (and in turn missing object discovery)
is not called. Discovery is also not initiated from
`PG::RecoveryState::Active::react(const MNotifyRec& notevt)`
as there are no unfound objects.

This patch adds a call to `discover_all_missing` when
when an OSD sends its `MNotifyRec` message and the PG is degraded.

Fixes: https://tracker.ceph.com/issues/37439
Signed-off-by: Jonas Jelten <jj@stusta.net>
(cherry picked from commit e152d092f7b7839bb27ac7a5cf1c95f4d3752b32)
src/osd/PG.cc