Bug #43213
OSDMap::pg_to_up_acting etc specify primary as osd, not pg_shard_t(osd+shard)
Status:
New
Priority:
High
Assignee:
-
Category:
-
Target version:
-
% Done:
0%
Source:
Tags:
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Component(RADOS):
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Description
The OSD methods to map a PG return primary as an int, not pg_shard_t (osd + shard).
Objecter compensates for this with
if (pi->is_erasure()) { for (uint8_t i = 0; i < acting.size(); ++i) { if (acting[i] == acting_primary) { spgid.reset_shard(shard_id_t(i)); break; } } }
which may be wrong if there are multiple shards on the same OSD and the primary isn't the first one.
Related issues
History
#1 Updated by Sage Weil over 4 years ago
- Related to Bug #43189: pgs stuck in laggy state added