The primary affinity code needs a seed to determine it's pseudo-random
behavior. Pass pps (optionally) out of _pg_to_osds() for this purpose.
Signed-off-by: Sage Weil <sage@inktank.com>
}
int OSDMap::_pg_to_osds(const pg_pool_t& pool, pg_t pg,
- vector<int> *osds, int *primary) const
+ vector<int> *osds, int *primary,
+ ps_t *ppps) const
{
// map to osds[]
ps_t pps = pool.raw_pg_to_pps(pg); // placement ps
_remove_nonexistent_osds(pool, *osds);
*primary = (osds->empty() ? -1 : osds->front());
+ if (ppps)
+ *ppps = pps;
return osds->size();
}
private:
/// pg -> (raw osd list)
int _pg_to_osds(const pg_pool_t& pool, pg_t pg,
- vector<int> *osds, int *primary) const;
+ vector<int> *osds, int *primary,
+ ps_t *ppps) const;
void _remove_nonexistent_osds(const pg_pool_t& pool, vector<int>& osds) const;
/// pg -> (up osd list)