From a0937ef214b9221e7a5e69e7b0f0697471d56293 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sun, 12 Oct 2014 10:05:51 -0700 Subject: [PATCH] osd/osd_types: consider CRUSH_ITEM_NONE in check_new_interval() min_size check Fixes: #9718 Backport: firefly Signed-off-by: Sage Weil (cherry picked from commit d947050c82a511f91c98e1c76e48ffa9e187eee7) Conflicts: src/osd/osd_types.cc --- src/osd/osd_types.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 16bdbaf3417f0..1aced90accceb 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -2235,9 +2235,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(pool_id)->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," -- 2.39.5