OSDMap::_pg_to_up_acting_osds: use _acting_primary unless acting is empty

If the temp set for whatever reason has only CRUSH_ITEM_NONE,
we need primary to be -1.

Signed-off-by: Samuel Just <sam.just@inktank.com>
This commit is contained in:
Samuel Just 2014-02-25 16:47:21 -08:00
parent dc079eb3c5
commit be2748c6d5

View File

@ -1555,10 +1555,10 @@ void OSDMap::_pg_to_up_acting_osds(pg_t pg, vector<int> *up, int *up_primary,
_raw_to_up_osds(*pool, raw, &_up, &_up_primary);
_apply_primary_affinity(pps, *pool, &_up, &_up_primary);
_get_temp_osds(*pool, pg, &_acting, &_acting_primary);
if (_acting.empty())
if (_acting.empty()) {
_acting = _up;
if (_acting_primary == -1)
_acting_primary = _up_primary;
}
if (up)
up->swap(_up);
if (up_primary)