ceph_assert(osdmap.is_up(target_osd));
ceph_assert(osdmap.get_addrs(target_osd) == m->target_addrs);
- mon.clog->info() << "osd." << target_osd << " marked itself down";
+ mon.clog->info() << "osd." << target_osd << " marked itself " << ((m->down_and_dead) ? "down and dead" : "down");
pending_inc.new_state[target_osd] = CEPH_OSD_UP;
+ if (m->down_and_dead) {
+ if (!pending_inc.new_xinfo.count(target_osd)) {
+ pending_inc.new_xinfo[target_osd] = osdmap.osd_xinfo[target_osd];
+ }
+ pending_inc.new_xinfo[target_osd].dead_epoch = m->get_epoch();
+ }
if (m->request_ack)
wait_for_finished_proposal(op, new C_AckMarkedDown(this, op));
return true;
pool_opts_t::key_t opt,
pool_opts_t::value_t val)
{
+ dout(10) << __func__ << " pool: " << pool_id << " option: " << opt
+ << " val: " << val << dendl;
auto p = pending_inc.new_pools.try_emplace(
pool_id, *osdmap.get_pg_pool(pool_id));
p.first->second.opts.set(opt, val);
<< "later before setting target_size_bytes";
return -EINVAL;
}
+ } else if (var == "target_size_ratio") {
+ if (f < 0.0) {
+ ss << "target_size_ratio cannot be negative";
+ return -EINVAL;
+ }
} else if (var == "pg_num_min") {
if (interr.length()) {
ss << "error parsing int value '" << val << "': " << interr;