From: Guang Yang Date: Thu, 26 Feb 2015 08:13:12 +0000 (+0000) Subject: osd: fix negative degraded objects during backfilling X-Git-Tag: v0.80.10~38^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=63b39dbd529936e60d0fd08dffd35f82b3d1729c;p=ceph.git osd: fix negative degraded objects during backfilling When there is deleting requests during backfilling, the reported number of degraded objects could be negative, as the primary's num_objects is the latest (locally) but the number for replicas might not reflect the deletings. A simple fix is to ignore the negative subtracted value. Signed-off-by: Guang Yang (cherry picked from commit 14d7e36d3c978844da73d0e1c8a3a1ec863bac15) Conflicts: src/osd/PG.cc --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 88c77f6b8df..ad5cd89fcee 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -2226,7 +2226,7 @@ void PG::_update_calc_stats() // the summation, not individual stat categories. uint64_t num_objects = info.stats.stats.sum.num_objects; - uint64_t degraded = 0; + int64_t degraded = 0; // if the actingbackfill set is smaller than we want, add in those missing replicas if (actingbackfill.size() < target) @@ -2248,7 +2248,9 @@ void PG::_update_calc_stats() degraded += peer_missing[*i].num_missing(); // not yet backfilled - degraded += num_objects - peer_info[*i].stats.stats.sum.num_objects; + int64_t diff = num_objects - peer_info[*i].stats.stats.sum.num_objects; + if (diff > 0) + degraded += diff; } info.stats.stats.sum.num_objects_degraded = degraded; info.stats.stats.sum.num_objects_unfound = get_num_unfound();