}
else if (prefix == "bench") {
- lock_guard l(osd_lock);
int64_t count;
int64_t bsize;
int64_t osize, onum;
ceph_assert(r == 0);
r = admin_socket->register_command("dump_scrub_reservations",
asok_hook,
- "show recovery reservations");
+ "show scrub reservations");
ceph_assert(r == 0);
r = admin_socket->register_command("get_latest_osdmap",
asok_hook,
(*pm)["rotational"] = store_is_rotational ? "1" : "0";
(*pm)["journal_rotational"] = journal_is_rotational ? "1" : "0";
(*pm)["default_device_class"] = store->get_default_device_class();
+ string osdspec_affinity;
+ int r = store->read_meta("osdspec_affinity", &osdspec_affinity);
+ if (r < 0 || osdspec_affinity.empty()) {
+ osdspec_affinity = "";
+ }
+ (*pm)["osdspec_affinity"] = osdspec_affinity;
store->collect_metadata(pm);
collect_sys_info(pm, cct);
return;
}
bool allow_requested_repair_only = false;
- if (service.is_recovery_active()) {
- if (!cct->_conf->osd_scrub_during_recovery && cct->_conf->osd_repair_during_recovery) {
- dout(10) << __func__
- << " will only schedule explicitly requested repair due to active recovery"
- << dendl;
- allow_requested_repair_only = true;
- } else if (!cct->_conf->osd_scrub_during_recovery && !cct->_conf->osd_repair_during_recovery) {
+ if (service.is_recovery_active() && !cct->_conf->osd_scrub_during_recovery) {
+ if (!cct->_conf->osd_repair_during_recovery) {
dout(20) << __func__ << " not scheduling scrubs due to active recovery" << dendl;
return;
}
+ dout(10) << __func__
+ << " will only schedule explicitly requested repair due to active recovery"
+ << dendl;
+ allow_requested_repair_only = true;
}
utime_t now = ceph_clock_now();
delete o;
request_full_map(e, last);
last = e - 1;
+
+ // don't continue committing if we failed to enc the first inc map
+ if (last < start) {
+ dout(10) << __func__ << " bailing because last < start (" << last << "<" << start << ")" << dendl;
+ m->put();
+ return;
+ }
break;
}
got_full_map(e);
}
map_lock.lock();
+ ceph_assert(first <= last);
+
bool do_shutdown = false;
bool do_restart = false;
bool network_error = false;
- OSDMapRef osdmap;
+ OSDMapRef osdmap = get_osdmap();
// advance through the new maps
for (epoch_t cur = first; cur <= last; cur++) {
if (empty) {
std::lock_guard l{sdata->sdata_wait_lock};
- sdata->sdata_cond.notify_one();
+ sdata->sdata_cond.notify_all();
}
}