From d947050c82a511f91c98e1c76e48ffa9e187eee7 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 --- 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 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," -- 2.47.3