pg_to_acting_osds() could return invalid acting and acting_primary.
So we shall check against the validity of acting_primary before proceeding on.
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
return RECALC_OP_TARGET_POOL_DNE;
}
vector<int> acting;
- osdmap->pg_to_acting_osds(c->target_pg, &acting, &c->osd);
+ int acting_primary;
+ osdmap->pg_to_acting_osds(c->target_pg, &acting, &acting_primary);
+ if (acting_primary == -1) {
+ c->map_check_error = -ENXIO;
+ c->map_check_error_str = "osd down";
+ return RECALC_OP_TARGET_OSD_DOWN;
+ }
+ c->osd = acting_primary;
}
OSDSession *s;