From: David Zafman Date: Tue, 24 Oct 2017 03:20:44 +0000 (-0700) Subject: osd: Handle objects on non-actingbackfill nodes during recovery X-Git-Tag: v13.0.1~436^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F18297%2Fhead;p=ceph.git osd: Handle objects on non-actingbackfill nodes during recovery With this fix we can see more misplaced and no degraded when doing recovery to a new up/acting set with node(s) containing objects that are not longer part of up/acting. Signed-off-by: David Zafman --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index a7cef006b0fd..af4045efbb1e 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -2635,6 +2635,17 @@ void PG::_update_calc_stats() } } + // Add recovery objects not part of actingbackfill to be used to reduce + // degraded and account as misplaced. + for (auto i = peer_info.begin() ; i != peer_info.end() ; ++i) { + if (actingbackfill.find(i->first) == actingbackfill.end()) + object_copies += i->second.stats.stats.sum.num_objects; + misplaced += i->second.stats.stats.sum.num_objects; + ++num_misplaced; + } + if (object_copies) + dout(20) << __func__ << " objects not part of up/acting " << object_copies << dendl; + // Objects backfilled, sorted by # objects. set> backfill_target_objects;