Skip to content

Commit

Permalink
libceph: don't set weight to IN when OSD is destroyed
Browse files Browse the repository at this point in the history
Since ceph.git commit 4e28f9e ("osd/OSDMap: clear osd_info,
osd_xinfo on osd deletion"), weight is set to IN when OSD is deleted.
This changes the result of applying an incremental for clients, not
just OSDs.  Because CRUSH computations are obviously affected,
pre-4e28f9e63644 servers disagree with post-4e28f9e63644 clients on
object placement, resulting in misdirected requests.

Mirrors ceph.git commit a6009d1.

Fixes: 930c532 ("libceph: apply new_state before new_up_client on incrementals")
Link: http://tracker.ceph.com/issues/19122
Signed-off-by: Ilya Dryomov <[email protected]>
Reviewed-by: Sage Weil <[email protected]>
  • Loading branch information
idryomov committed Mar 7, 2017
1 parent 9afd30d commit b581a58
Showing 1 changed file with 0 additions and 1 deletion.
1 change: 0 additions & 1 deletion net/ceph/osdmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -1379,7 +1379,6 @@ static int decode_new_up_state_weight(void **p, void *end,
if ((map->osd_state[osd] & CEPH_OSD_EXISTS) &&
(xorstate & CEPH_OSD_EXISTS)) {
pr_info("osd%d does not exist\n", osd);
map->osd_weight[osd] = CEPH_OSD_IN;
ret = set_primary_affinity(map, osd,
CEPH_OSD_DEFAULT_PRIMARY_AFFINITY);
if (ret)
Expand Down

0 comments on commit b581a58

Please sign in to comment.