]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
osd/PeeringState: transit async_recovery_targets back into acting before backfilling 32849/head
authorxie xingguo <xie.xingguo@zte.com.cn>
Thu, 12 Dec 2019 06:01:45 +0000 (14:01 +0800)
committerNathan Cutler <ncutler@suse.com>
Fri, 14 Feb 2020 14:19:58 +0000 (15:19 +0100)
commit32d157acbbd9e3113270468e3e4ead059b99b8a0
tree9dd88ef29594c9f785016af282c2d11a1d1d5d38
parentd430eceb6004276df2135756538e84bcb0145f38
osd/PeeringState: transit async_recovery_targets back into acting before backfilling

When an osd that is part of current up set gets chosen as an
async_recovery_target, it gets removed from the acting set.
Since we don't allow any want that is larger than the pool size,
a pg must transit into UNDERSIZED when asynchronous recovery
eventually happens.
However, if that pg has one or more backfill targets, it might
spin UNDERSIZED for a long time during which mon will keep issuing
"PG_AVAILABILITY" warns until all backfill targets finally completes.

Fix by calling choose_acting to get any async_recovery_targets back
into acting before we continue to backfill.

Fixes: https://tracker.ceph.com/issues/43311
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
(cherry picked from commit 48bc4786fd73b538b673e6a7eb7ced986d95005f)

Conflicts:
src/osd/PeeringState.cc
- file does not exist in nautilus; backported the code change manually
  to src/osd/PG.cc
src/osd/PG.cc