From: Sage Weil Date: Sun, 12 Oct 2014 17:05:51 +0000 (-0700) Subject: osd/osd_types: consider CRUSH_ITEM_NONE in check_new_interval() min_size check X-Git-Tag: v0.87~17^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F2708%2Fhead;p=ceph.git osd/osd_types: consider CRUSH_ITEM_NONE in check_new_interval() min_size check Fixes: #9718 Backport: firefly Signed-off-by: Sage Weil --- diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index d7081b97ede0..47cb37bc0847 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -2384,9 +2384,15 @@ bool pg_interval_t::check_new_interval( i.primary = old_acting_primary; i.up_primary = old_up_primary; - if (!i.acting.empty() && i.primary != -1 && - i.acting.size() >= - lastmap->get_pools().find(pgid.pool())->second.min_size) { + unsigned num_acting = 0; + for (vector::const_iterator p = i.acting.begin(); p != i.acting.end(); + ++p) + if (*p != CRUSH_ITEM_NONE) + ++num_acting; + + if (num_acting && + i.primary != -1 && + num_acting >= lastmap->get_pools().find(pgid.pool())->second.min_size) { if (out) *out << "generate_past_intervals " << i << ": not rw,"