OSDService::OSDService(OSD *osd) :
osd(osd),
+ cct(osd->cct),
whoami(osd->whoami), store(osd->store), clog(osd->clog),
pg_recovery_stats(osd->pg_recovery_stats),
infos_oid(OSD::make_infos_oid()),
watch_timer(osd->client_messenger->cct, watch_lock),
next_notif_id(0),
backfill_request_lock("OSD::backfill_request_lock"),
- backfill_request_timer(osd->cct, backfill_request_lock, false),
+ backfill_request_timer(cct, backfill_request_lock, false),
last_tid(0),
tid_lock("OSDService::tid_lock"),
- reserver_finisher(osd->cct),
- local_reserver(&reserver_finisher, osd->cct->_conf->osd_max_backfills),
- remote_reserver(&reserver_finisher, osd->cct->_conf->osd_max_backfills),
+ reserver_finisher(cct),
+ local_reserver(&reserver_finisher, cct->_conf->osd_max_backfills),
+ remote_reserver(&reserver_finisher, cct->_conf->osd_max_backfills),
pg_temp_lock("OSDService::pg_temp_lock"),
map_cache_lock("OSDService::map_lock"),
- map_cache(osd->cct->_conf->osd_map_cache_size),
- map_bl_cache(osd->cct->_conf->osd_map_cache_size),
- map_bl_inc_cache(osd->cct->_conf->osd_map_cache_size),
+ map_cache(cct->_conf->osd_map_cache_size),
+ map_bl_cache(cct->_conf->osd_map_cache_size),
+ map_bl_inc_cache(cct->_conf->osd_map_cache_size),
in_progress_split_lock("OSDService::in_progress_split_lock"),
full_status_lock("OSDService::full_status_lock"),
cur_state(NONE),
float OSDService::get_full_ratio()
{
- float full_ratio = osd->cct->_conf->osd_failsafe_full_ratio;
+ float full_ratio = cct->_conf->osd_failsafe_full_ratio;
if (full_ratio > 1.0) full_ratio /= 100.0;
return full_ratio;
}
float OSDService::get_nearfull_ratio()
{
- float nearfull_ratio = osd->cct->_conf->osd_failsafe_nearfull_ratio;
+ float nearfull_ratio = cct->_conf->osd_failsafe_nearfull_ratio;
if (nearfull_ratio > 1.0) nearfull_ratio /= 100.0;
return nearfull_ratio;
}
if (cur_state != new_state) {
cur_state = new_state;
- } else if (now - last_msg < osd->cct->_conf->osd_op_complaint_time) {
+ } else if (now - last_msg < cct->_conf->osd_op_complaint_time) {
return;
}
last_msg = now;
{
Mutex::Locker l(full_status_lock);
double max_ratio;
- max_ratio = osd->cct->_conf->osd_backfill_full_ratio;
+ max_ratio = cct->_conf->osd_backfill_full_ratio;
if (_ratio)
*_ratio = cur_ratio;
if (_max_ratio)
string poolstr;
- cmd_getval(service->osd->cct, cmdmap, "pool", poolstr);
+ cmd_getval(service->cct, cmdmap, "pool", poolstr);
pool = curmap->const_lookup_pg_pool_name(poolstr.c_str());
//If we can't find it by name then maybe id specified
if (pool < 0 && isdigit(poolstr[0]))
}
r = -1;
string objname, nspace;
- cmd_getval(service->osd->cct, cmdmap, "objname", objname);
+ cmd_getval(service->cct, cmdmap, "objname", objname);
std::size_t found = objname.find_first_of('/');
if (found != string::npos) {
nspace = objname.substr(0, found);
map<string, bufferlist> newattrs;
bufferlist val;
string key, valstr;
- cmd_getval(service->osd->cct, cmdmap, "key", key);
- cmd_getval(service->osd->cct, cmdmap, "val", valstr);
+ cmd_getval(service->cct, cmdmap, "key", key);
+ cmd_getval(service->cct, cmdmap, "val", valstr);
val.append(valstr);
newattrs[key] = val;
} else if (command == "rmomapkey") {
string key;
set<string> keys;
- cmd_getval(service->osd->cct, cmdmap, "key", key);
+ cmd_getval(service->cct, cmdmap, "key", key);
keys.insert(key);
t.omap_rmkeys(coll_t(pgid), obj, keys);
bufferlist newheader;
string headerstr;
- cmd_getval(service->osd->cct, cmdmap, "header", headerstr);
+ cmd_getval(service->cct, cmdmap, "header", headerstr);
newheader.append(headerstr);
t.omap_setheader(coll_t(pgid), obj, newheader);
r = store->apply_transaction(t);
}
} else if (command == "truncobj") {
int64_t trunclen;
- cmd_getval(service->osd->cct, cmdmap, "len", trunclen);
+ cmd_getval(service->cct, cmdmap, "len", trunclen);
t.truncate(coll_t(pgid), obj, trunclen);
r = store->apply_transaction(t);
if (r < 0)
if (pg->have_temp_coll()) {
bool cont = remove_dir(
- pg->osd->osd->cct, store, &mapper, &driver, pg->osr.get(), pg->get_temp_coll(), item.second);
+ pg->cct, store, &mapper, &driver, pg->osr.get(), pg->get_temp_coll(), item.second);
if (!cont)
return;
}
bool cont = remove_dir(
- pg->osd->osd->cct, store, &mapper, &driver, pg->osr.get(), coll, item.second);
+ pg->cct, store, &mapper, &driver, pg->osr.get(), coll, item.second);
if (!cont)
return;
bool result = false;
sched_scrub_lock.Lock();
- if (scrubs_pending + scrubs_active < osd->cct->_conf->osd_max_scrubs) {
+ if (scrubs_pending + scrubs_active < cct->_conf->osd_max_scrubs) {
dout(20) << "inc_scrubs_pending " << scrubs_pending << " -> " << (scrubs_pending+1)
- << " (max " << osd->cct->_conf->osd_max_scrubs << ", active " << scrubs_active << ")" << dendl;
+ << " (max " << cct->_conf->osd_max_scrubs << ", active " << scrubs_active << ")" << dendl;
result = true;
++scrubs_pending;
} else {
- dout(20) << "inc_scrubs_pending " << scrubs_pending << " + " << scrubs_active << " active >= max " << osd->cct->_conf->osd_max_scrubs << dendl;
+ dout(20) << "inc_scrubs_pending " << scrubs_pending << " + " << scrubs_active << " active >= max " << cct->_conf->osd_max_scrubs << dendl;
}
sched_scrub_lock.Unlock();
{
sched_scrub_lock.Lock();
dout(20) << "dec_scrubs_pending " << scrubs_pending << " -> " << (scrubs_pending-1)
- << " (max " << osd->cct->_conf->osd_max_scrubs << ", active " << scrubs_active << ")" << dendl;
+ << " (max " << cct->_conf->osd_max_scrubs << ", active " << scrubs_active << ")" << dendl;
--scrubs_pending;
assert(scrubs_pending >= 0);
sched_scrub_lock.Unlock();
if (reserved) {
--(scrubs_pending);
dout(20) << "inc_scrubs_active " << (scrubs_active-1) << " -> " << scrubs_active
- << " (max " << osd->cct->_conf->osd_max_scrubs
+ << " (max " << cct->_conf->osd_max_scrubs
<< ", pending " << (scrubs_pending+1) << " -> " << scrubs_pending << ")" << dendl;
assert(scrubs_pending >= 0);
} else {
dout(20) << "inc_scrubs_active " << (scrubs_active-1) << " -> " << scrubs_active
- << " (max " << osd->cct->_conf->osd_max_scrubs
+ << " (max " << cct->_conf->osd_max_scrubs
<< ", pending " << scrubs_pending << ")" << dendl;
}
sched_scrub_lock.Unlock();
{
sched_scrub_lock.Lock();
dout(20) << "dec_scrubs_active " << scrubs_active << " -> " << (scrubs_active-1)
- << " (max " << osd->cct->_conf->osd_max_scrubs << ", pending " << scrubs_pending << ")" << dendl;
+ << " (max " << cct->_conf->osd_max_scrubs << ", pending " << scrubs_pending << ")" << dendl;
--scrubs_active;
sched_scrub_lock.Unlock();
}
osdmap->get_epoch(),
false
));
- utime_t now = ceph_clock_now(osd->cct);
+ utime_t now = ceph_clock_now(cct);
utime_t timeout;
- timeout.set_from_double(now + osd->cct->_conf->osd_mon_shutdown_timeout);
- while ((ceph_clock_now(osd->cct) < timeout) &&
+ timeout.set_from_double(now + cct->_conf->osd_mon_shutdown_timeout);
+ while ((ceph_clock_now(cct) < timeout) &&
(state != STOPPING)) {
is_stopping_cond.WaitUntil(is_stopping_lock, timeout);
}
{
epoch_t e = o->get_epoch();
- if (osd->cct->_conf->osd_map_dedup) {
+ if (cct->_conf->osd_map_dedup) {
// Dedup against an existing map at a nearby epoch
OSDMapRef for_dedup = map_cache.lower_bound(e);
if (for_dedup) {
#include "common/WorkQueue.h"
#include "common/LogClient.h"
#include "common/AsyncReserver.h"
+#include "common/ceph_context.h"
#include "os/ObjectStore.h"
#include "OSDCap.h"
class OSDService {
public:
OSD *osd;
+ CephContext *cct;
SharedPtrRegistry<pg_t, ObjectStore::Sequencer> osr_registry;
SharedPtrRegistry<pg_t, DeletingState> deleting_pgs;
const int whoami;
const PGPool &_pool, pg_t p, const hobject_t& loid,
const hobject_t& ioid) :
osd(o),
+ cct(o->cct),
osdriver(osd->store, coll_t(), OSD::make_snapmapper_oid()),
snap_mapper(
&osdriver,
deleting(false), dirty_info(false), dirty_big_info(false),
info(p),
info_struct_v(0),
- coll(p), pg_log(o->osd->cct), log_oid(loid), biginfo_oid(ioid),
+ coll(p), pg_log(cct), log_oid(loid), biginfo_oid(ioid),
recovery_item(this), scrub_item(this), scrub_finalize_item(this), snap_trim_item(this), stat_queue_item(this),
recovery_ops_active(0),
waiting_on_backfill(0),
if (is_primary() &&
pool.info.crash_replay_interval > 0 &&
may_need_replay(get_osdmap())) {
- replay_until = ceph_clock_now(osd->osd->cct);
+ replay_until = ceph_clock_now(cct);
replay_until += pool.info.crash_replay_interval;
dout(10) << "activate starting replay interval for " << pool.info.crash_replay_interval
<< " until " << replay_until << dendl;
m = new MOSDPGLog(get_osdmap()->get_epoch(), pi);
// send some recent log, so that op dup detection works well.
- m->log.copy_up_to(pg_log.get_log(), osd->osd->cct->_conf->osd_min_pg_log_entries);
+ m->log.copy_up_to(pg_log.get_log(), cct->_conf->osd_min_pg_log_entries);
m->info.log_tail = m->log.tail;
pi.log_tail = m->log.tail; // sigh...
else
state_clear(PG_STATE_INCONSISTENT);
- utime_t now = ceph_clock_now(osd->osd->cct);
+ utime_t now = ceph_clock_now(cct);
info.stats.last_fresh = now;
if (info.stats.state != state) {
info.stats.state = state;
return false;
}
- bool time_for_deep = (ceph_clock_now(osd->osd->cct) >
- info.history.last_deep_scrub_stamp + osd->osd->cct->_conf->osd_deep_scrub_interval);
+ bool time_for_deep = (ceph_clock_now(cct) >
+ info.history.last_deep_scrub_stamp + cct->_conf->osd_deep_scrub_interval);
//NODEEP_SCRUB so ignore time initiated deep-scrub
if (osd->osd->get_osdmap()->test_flag(CEPH_OSDMAP_NODEEP_SCRUB))
int r;
__u64 pos = 0;
while ( (r = osd->store->read(coll, poid, pos,
- osd->osd->cct->_conf->osd_deep_scrub_stride, bl,
+ cct->_conf->osd_deep_scrub_stride, bl,
true)) > 0) {
handle.reset_tp_timeout();
h << bl;
assert(iter);
uint64_t keys_scanned = 0;
for (iter->seek_to_first(); iter->valid() ; iter->next()) {
- if (osd->osd->cct->_conf->osd_scan_list_ping_tp_interval &&
- (keys_scanned % osd->osd->cct->_conf->osd_scan_list_ping_tp_interval == 0)) {
+ if (cct->_conf->osd_scan_list_ping_tp_interval &&
+ (keys_scanned % cct->_conf->osd_scan_list_ping_tp_interval == 0)) {
handle.reset_tp_timeout();
}
++keys_scanned;
{
Mutex::Locker lock(osd->backfill_request_lock);
osd->backfill_request_timer.add_event_after(
- osd->osd->cct->_conf->osd_backfill_retry_interval,
+ cct->_conf->osd_backfill_retry_interval,
new QueuePeeringEvt<RequestBackfill>(
this, get_osdmap()->get_epoch(),
RequestBackfill()));
while (!boundary_found) {
vector<hobject_t> objects;
ret = osd->store->collection_list_partial(coll, start,
- osd->osd->cct->_conf->osd_scrub_chunk_min,
- osd->osd->cct->_conf->osd_scrub_chunk_max,
+ cct->_conf->osd_scrub_chunk_min,
+ cct->_conf->osd_scrub_chunk_max,
0,
&objects, &scrubber.end);
assert(ret >= 0);
// finish up
unreg_next_scrub();
- utime_t now = ceph_clock_now(osd->osd->cct);
+ utime_t now = ceph_clock_now(cct);
info.history.last_scrub = info.last_update;
info.history.last_scrub_stamp = now;
if (scrubber.deep) {
if (last_complete_ondisk.epoch >= info.history.last_epoch_started) {
// DEBUG: verify that the snaps are empty in snap_mapper
- if (osd->osd->cct->_conf->osd_debug_verify_snaps_on_info) {
+ if (cct->_conf->osd_debug_verify_snaps_on_info) {
interval_set<snapid_t> p;
p.union_of(oinfo.purged_snaps, info.purged_snaps);
p.subtract(info.purged_snaps);
ActMap evt;
recovery_state.handle_event(evt, rctx);
if (osdmap_ref->get_epoch() - last_persisted_osdmap_ref->get_epoch() >
- osd->osd->cct->_conf->osd_pg_epoch_persisted_max_stale) {
+ cct->_conf->osd_pg_epoch_persisted_max_stale) {
dout(20) << __func__ << ": Dirtying info: last_persisted is "
<< last_persisted_osdmap_ref->get_epoch()
<< " while current is " << osdmap_ref->get_epoch() << dendl;
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_initial_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_started_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_reset_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_start_latency, dur);
}
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
pg->want_acting.clear();
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_primary_latency, dur);
}
pg->state_clear(PG_STATE_PEERING);
pg->clear_probe_targets();
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_peering_latency, dur);
}
pg->backfill_reserved = false;
pg->backfill_reserving = false;
pg->state_clear(PG_STATE_BACKFILL);
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_backfilling_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_waitremotebackfillreserved_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_waitlocalbackfillreserved_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_notbackfilling_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_repnotrecovering_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_repwaitrecoveryreserved_latency, dur);
}
double ratio, max_ratio;
if (pg->osd->too_full_for_backfill(&ratio, &max_ratio) &&
- !pg->osd->osd->cct->_conf->osd_debug_skip_full_check_in_backfill_reservation) {
+ !pg->cct->_conf->osd_debug_skip_full_check_in_backfill_reservation) {
dout(10) << "backfill reservation rejected: full ratio is "
<< ratio << ", which is greater than max allowed ratio "
<< max_ratio << dendl;
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_repwaitbackfillreserved_latency, dur);
}
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
pg->osd->remote_reserver.cancel_reservation(pg->info.pgid);
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_RepRecovering_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_activating_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_waitlocalrecoveryreserved_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_waitremoterecoveryreserved_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_recovering_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_recovered_latency, dur);
}
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
pg->state_clear(PG_STATE_CLEAN);
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_clean_latency, dur);
}
}
// if we haven't reported our PG stats in a long time, do so now.
- if (pg->info.stats.reported_epoch + pg->osd->osd->cct->_conf->osd_pg_stat_report_interval_max < advmap.osdmap->get_epoch()) {
+ if (pg->info.stats.reported_epoch + pg->cct->_conf->osd_pg_stat_report_interval_max < advmap.osdmap->get_epoch()) {
dout(20) << "reporting stats to osd after " << (advmap.osdmap->get_epoch() - pg->info.stats.reported_epoch)
<< " epochs" << dendl;
pg->publish_stats_to_osd();
pg->discover_all_missing(*context< RecoveryMachine >().get_query_map());
}
- if (pg->osd->osd->cct->_conf->osd_check_for_log_corruption)
+ if (pg->cct->_conf->osd_check_for_log_corruption)
pg->check_log_for_corruption(pg->osd->store);
int unfound = pg->pg_log.get_missing().num_missing() - pg->missing_loc.size();
if (unfound > 0 &&
pg->all_unfound_are_queried_or_lost(pg->get_osdmap())) {
- if (pg->osd->osd->cct->_conf->osd_auto_mark_unfound_lost) {
+ if (pg->cct->_conf->osd_auto_mark_unfound_lost) {
pg->osd->clog.error() << pg->info.pgid << " has " << unfound
<< " objects unfound and apparently lost, would automatically marking lost but NOT IMPLEMENTED\n";
//pg->mark_all_unfound_lost(*context< RecoveryMachine >().get_cur_transaction());
pg->state_clear(PG_STATE_BACKFILL_WAIT);
pg->state_clear(PG_STATE_RECOVERY_WAIT);
pg->state_clear(PG_STATE_REPLAY);
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_active_latency, dur);
}
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
pg->osd->remote_reserver.cancel_reservation(pg->info.pgid);
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_replicaactive_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_stray_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_getinfo_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_getlog_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_waitactingchange_latency, dur);
}
PG *pg = context< RecoveryMachine >().pg;
pg->state_clear(PG_STATE_INCOMPLETE);
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_incomplete_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_getmissing_latency, dur);
}
{
context< RecoveryMachine >().log_exit(state_name, enter_time);
PG *pg = context< RecoveryMachine >().pg;
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
pg->osd->recoverystate_perf->tinc(rs_waitupthru_latency, dur);
}
void PG::RecoveryState::RecoveryMachine::log_exit(const char *state_name, utime_t enter_time)
{
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - enter_time;
+ utime_t dur = ceph_clock_now(pg->cct) - enter_time;
dout(5) << "exit " << state_name << " " << dur << " " << event_count << " " << event_time << dendl;
- pg->osd->pg_recovery_stats.log_exit(state_name, ceph_clock_now(pg->osd->osd->cct) - enter_time,
+ pg->osd->pg_recovery_stats.log_exit(state_name, ceph_clock_now(pg->cct) - enter_time,
event_count, event_time);
event_count = 0;
event_time = utime_t();
assert(!rctx);
rctx = new_ctx;
if (rctx)
- rctx->start_time = ceph_clock_now(pg->osd->osd->cct);
+ rctx->start_time = ceph_clock_now(pg->cct);
}
void PG::RecoveryState::end_handle() {
if (rctx) {
- utime_t dur = ceph_clock_now(pg->osd->osd->cct) - rctx->start_time;
+ utime_t dur = ceph_clock_now(pg->cct) - rctx->start_time;
machine.event_time += dur;
}
machine.event_count++;
#include "common/cmdparse.h"
#include "common/tracked_int_ptr.hpp"
#include "common/WorkQueue.h"
+#include "common/ceph_context.h"
#include "include/str_list.h"
#include <list>
/*** PG ****/
protected:
OSDService *osd;
+ CephContext *cct;
OSDriver osdriver;
SnapMapper snap_mapper;
public:
else {
dout(7) << "missing " << soid << " v " << v << ", pulling." << dendl;
map<int, vector<PullOp> > pulls;
- prepare_pull(soid, v, osd->osd->cct->_conf->osd_client_op_priority, &pulls);
- send_pulls(osd->osd->cct->_conf->osd_client_op_priority, pulls);
+ prepare_pull(soid, v, cct->_conf->osd_client_op_priority, &pulls);
+ send_pulls(cct->_conf->osd_client_op_priority, pulls);
}
waiting_for_missing_object[soid].push_back(op);
op->mark_delayed("waiting for missing object");
}
}
map<int, vector<PushOp> > pushes;
- prep_object_replica_pushes(soid, v, osd->osd->cct->_conf->osd_client_op_priority, &pushes);
- send_pushes(osd->osd->cct->_conf->osd_client_op_priority, pushes);
+ prep_object_replica_pushes(soid, v, cct->_conf->osd_client_op_priority, &pushes);
+ send_pushes(cct->_conf->osd_client_op_priority, pushes);
}
waiting_for_degraded_object[soid].push_back(op);
op->mark_delayed("waiting for degraded object");
string prefix;
string format;
- cmd_getval(osd->osd->cct, cmdmap, "format", format);
+ cmd_getval(cct, cmdmap, "format", format);
boost::scoped_ptr<Formatter> f(new_formatter(format));
// demand that we have a formatter
if (!f)
f.reset(new_formatter("json"));
string command;
- cmd_getval(osd->osd->cct, cmdmap, "cmd", command);
+ cmd_getval(cct, cmdmap, "cmd", command);
if (command == "query") {
f->open_object_section("pg");
f->dump_string("state", pg_state_string(get_state()));
}
else if (command == "mark_unfound_lost") {
string mulcmd;
- cmd_getval(osd->osd->cct, cmdmap, "mulcmd", mulcmd);
+ cmd_getval(cct, cmdmap, "mulcmd", mulcmd);
if (mulcmd != "revert") {
ss << "mode must be 'revert'; mark and delete not yet implemented";
return -EINVAL;
else if (command == "list_missing") {
hobject_t offset;
string offset_json;
- if (cmd_getval(osd->osd->cct, cmdmap, "offset", offset_json)) {
+ if (cmd_getval(cct, cmdmap, "offset", offset_json)) {
json_spirit::Value v;
try {
if (!json_spirit::read(offset_json, v))
f->open_array_section("objects");
int32_t num = 0;
bufferlist bl;
- while (p != missing.missing.end() && num < osd->osd->cct->_conf->osd_command_max_records) {
+ while (p != missing.missing.end() && num < cct->_conf->osd_command_max_records) {
f->open_object_section("object");
{
f->open_object_section("oid");
dout(10) << " pgls pg=" << m->get_pg() << " != " << info.pgid << dendl;
result = 0; // hmm?
} else {
- unsigned list_size = MIN(osd->osd->cct->_conf->osd_max_pgls, p->op.pgls.count);
+ unsigned list_size = MIN(cct->_conf->osd_max_pgls, p->op.pgls.count);
dout(10) << " pgls pg=" << m->get_pg() << " count " << list_size << dendl;
// read into a buffer
return;
}
- size_t target = osd->osd->cct->_conf->osd_min_pg_log_entries;
+ size_t target = cct->_conf->osd_min_pg_log_entries;
if (is_degraded() ||
state_test(PG_STATE_RECOVERING |
PG_STATE_RECOVERY_WAIT |
PG_STATE_BACKFILL |
PG_STATE_BACKFILL_WAIT |
PG_STATE_BACKFILL_TOOFULL)) {
- target = osd->osd->cct->_conf->osd_max_pg_log_entries;
+ target = cct->_conf->osd_max_pg_log_entries;
}
if (min_last_complete_ondisk != eversion_t() &&
ctx->user_at_version = obc->obs.oi.user_version;
// note my stats
- utime_t now = ceph_clock_now(osd->osd->cct);
+ utime_t now = ceph_clock_now(cct);
// note some basic context for op replication that prepare_transaction may clobber
eversion_t old_last_update = pg_log.get_head();
append_log(ctx->log, pg_trim_to, ctx->local_t);
// verify that we are doing this in order?
- if (osd->osd->cct->_conf->osd_debug_op_order && m->get_source().is_client()) {
+ if (cct->_conf->osd_debug_op_order && m->get_source().is_client()) {
map<client_t,tid_t>& cm = debug_op_order[obc->obs.oi.soid];
tid_t t = m->get_tid();
client_t n = m->get_source().num();
OpRequestRef op = ctx->op;
MOSDOp *m = static_cast<MOSDOp*>(op->request);
- utime_t now = ceph_clock_now(osd->osd->cct);
+ utime_t now = ceph_clock_now(cct);
utime_t latency = now;
latency -= ctx->op->request->get_recv_stamp();
void ReplicatedPG::log_subop_stats(OpRequestRef op, int tag_inb, int tag_lat)
{
- utime_t now = ceph_clock_now(osd->osd->cct);
+ utime_t now = ceph_clock_now(cct);
utime_t latency = now;
latency -= op->request->get_recv_stamp();
BackfillInterval bi;
osr->flush();
scan_range(
- m->begin, osd->osd->cct->_conf->osd_backfill_scan_min,
- osd->osd->cct->_conf->osd_backfill_scan_max, &bi, handle);
+ m->begin, cct->_conf->osd_backfill_scan_min,
+ cct->_conf->osd_backfill_scan_max, &bi, handle);
MOSDPGScan *reply = new MOSDPGScan(MOSDPGScan::OP_SCAN_DIGEST,
get_osdmap()->get_epoch(), m->query_epoch,
info.pgid, bi.begin, bi.end);
reply->pgid = info.pgid;
reply->map_epoch = m->map_epoch;
reply->replies.swap(replies);
- reply->compute_cost(osd->osd->cct);
+ reply->compute_cost(cct);
t->register_on_complete(new C_OSD_SendMessageOnConn(
osd, reply, m->get_connection()));
reply->pgid = info.pgid;
reply->map_epoch = m->map_epoch;
reply->pulls.swap(replies);
- reply->compute_cost(osd->osd->cct);
+ reply->compute_cost(cct);
t->register_on_complete(new C_OSD_SendMessageOnConn(
osd, reply, m->get_connection()));
case MOSDPGBackfill::OP_BACKFILL_FINISH:
{
assert(is_replica());
- assert(osd->osd->cct->_conf->osd_kill_backfill_at != 1);
+ assert(cct->_conf->osd_kill_backfill_at != 1);
MOSDPGBackfill *reply = new MOSDPGBackfill(MOSDPGBackfill::OP_BACKFILL_FINISH_ACK,
get_osdmap()->get_epoch(), m->query_epoch,
info.pgid);
- reply->set_priority(osd->osd->cct->_conf->osd_recovery_op_priority);
+ reply->set_priority(cct->_conf->osd_recovery_op_priority);
osd->send_message_osd_cluster(reply, m->get_connection());
queue_peering_event(
CephPeeringEvtRef(
case MOSDPGBackfill::OP_BACKFILL_PROGRESS:
{
assert(is_replica());
- assert(osd->osd->cct->_conf->osd_kill_backfill_at != 2);
+ assert(cct->_conf->osd_kill_backfill_at != 2);
info.last_backfill = m->last_backfill;
if (m->compat_stat_sum) {
case MOSDPGBackfill::OP_BACKFILL_FINISH_ACK:
{
assert(is_primary());
- assert(osd->osd->cct->_conf->osd_kill_backfill_at != 3);
+ assert(cct->_conf->osd_kill_backfill_at != 3);
finish_recovery_op(hobject_t::get_max());
}
break;
&obc->obs,
obc->ssc,
this);
- ctx->mtime = ceph_clock_now(osd->osd->cct);
+ ctx->mtime = ceph_clock_now(cct);
ctx->at_version.epoch = get_osdmap()->get_epoch();
ctx->at_version.version = pg_log.get_head().version + 1;
// munge ZERO -> TRUNCATE? (don't munge to DELETE or we risk hosing attributes)
if (op.op == CEPH_OSD_OP_ZERO &&
obs.exists &&
- op.extent.offset < osd->osd->cct->_conf->osd_max_object_size &&
+ op.extent.offset < cct->_conf->osd_max_object_size &&
op.extent.length >= 1 &&
- op.extent.length <= osd->osd->cct->_conf->osd_max_object_size &&
+ op.extent.length <= cct->_conf->osd_max_object_size &&
op.extent.offset + op.extent.length >= oi.size) {
if (op.extent.offset >= oi.size) {
// no-op
uint64_t last = op.extent.offset;
for (miter = m.begin(); miter != m.end(); ++miter) {
// verify hole?
- if (osd->osd->cct->_conf->osd_verify_sparse_read_holes &&
+ if (cct->_conf->osd_verify_sparse_read_holes &&
last < miter->first) {
bufferlist t;
uint64_t len = miter->first - last;
}
// verify trailing hole?
- if (osd->osd->cct->_conf->osd_verify_sparse_read_holes) {
+ if (cct->_conf->osd_verify_sparse_read_holes) {
uint64_t end = MIN(op.extent.offset + op.extent.length, oi.size);
if (last < end) {
bufferlist t;
timeout = 0;
}
if (!timeout)
- timeout = osd->osd->cct->_conf->osd_default_notify_timeout;
+ timeout = cct->_conf->osd_default_notify_timeout;
notify_info_t n;
n.timeout = timeout;
oi.truncate_size = op.extent.truncate_size;
}
}
- result = check_offset_and_length(op.extent.offset, op.extent.length, osd->osd->cct->_conf->osd_max_object_size);
+ result = check_offset_and_length(op.extent.offset, op.extent.length, cct->_conf->osd_max_object_size);
if (result < 0)
break;
t.write(coll, soid, op.extent.offset, op.extent.length, osd_op.indata);
result = -EINVAL;
break;
}
- result = check_offset_and_length(op.extent.offset, op.extent.length, osd->osd->cct->_conf->osd_max_object_size);
+ result = check_offset_and_length(op.extent.offset, op.extent.length, cct->_conf->osd_max_object_size);
if (result < 0)
break;
if (obs.exists) {
case CEPH_OSD_OP_ZERO:
++ctx->num_write;
{ // zero
- result = check_offset_and_length(op.extent.offset, op.extent.length, osd->osd->cct->_conf->osd_max_object_size);
+ result = check_offset_and_length(op.extent.offset, op.extent.length, cct->_conf->osd_max_object_size);
if (result < 0)
break;
assert(op.extent.length);
break;
}
- if (op.extent.offset > osd->osd->cct->_conf->osd_max_object_size) {
+ if (op.extent.offset > cct->_conf->osd_max_object_size) {
result = -EFBIG;
break;
}
dout(10) << "watch: peer_addr="
<< ctx->op->request->get_connection()->get_peer_addr() << dendl;
- watch_info_t w(cookie, osd->osd->cct->_conf->osd_client_watch_timeout,
+ watch_info_t w(cookie, cct->_conf->osd_client_watch_timeout,
ctx->op->request->get_connection()->get_peer_addr());
if (do_watch) {
if (oi.watchers.count(make_pair(cookie, entity))) {
case CEPH_OSD_OP_SETXATTR:
++ctx->num_write;
{
- if (op.xattr.value_len > osd->osd->cct->_conf->osd_max_attr_size) {
+ if (op.xattr.value_len > cct->_conf->osd_max_attr_size) {
result = -EFBIG;
break;
}
}
}
- if (osd->osd->cct->_conf->osd_tmapput_sets_uses_tmap) {
- assert(osd->osd->cct->_conf->osd_auto_upgrade_tmap);
+ if (cct->_conf->osd_tmapput_sets_uses_tmap) {
+ assert(cct->_conf->osd_auto_upgrade_tmap);
oi.uses_tmap = true;
}
}
set<string> out_set;
- if (oi.uses_tmap && osd->osd->cct->_conf->osd_auto_upgrade_tmap) {
+ if (oi.uses_tmap && cct->_conf->osd_auto_upgrade_tmap) {
dout(20) << "CEPH_OSD_OP_OMAPGETKEYS: "
<< " Reading " << oi.soid << " omap from tmap" << dendl;
map<string, bufferlist> vals;
}
map<string, bufferlist> out_set;
- if (oi.uses_tmap && osd->osd->cct->_conf->osd_auto_upgrade_tmap) {
+ if (oi.uses_tmap && cct->_conf->osd_auto_upgrade_tmap) {
dout(20) << "CEPH_OSD_OP_OMAPGETVALS: "
<< " Reading " << oi.soid << " omap from tmap" << dendl;
map<string, bufferlist> vals;
case CEPH_OSD_OP_OMAPGETHEADER:
++ctx->num_read;
{
- if (oi.uses_tmap && osd->osd->cct->_conf->osd_auto_upgrade_tmap) {
+ if (oi.uses_tmap && cct->_conf->osd_auto_upgrade_tmap) {
dout(20) << "CEPH_OSD_OP_OMAPGETHEADER: "
<< " Reading " << oi.soid << " omap from tmap" << dendl;
map<string, bufferlist> vals;
goto fail;
}
map<string, bufferlist> out;
- if (oi.uses_tmap && osd->osd->cct->_conf->osd_auto_upgrade_tmap) {
+ if (oi.uses_tmap && cct->_conf->osd_auto_upgrade_tmap) {
dout(20) << "CEPH_OSD_OP_OMAPGET: "
<< " Reading " << oi.soid << " omap from tmap" << dendl;
map<string, bufferlist> vals;
case CEPH_OSD_OP_OMAPSETVALS:
++ctx->num_write;
{
- if (oi.uses_tmap && osd->osd->cct->_conf->osd_auto_upgrade_tmap) {
+ if (oi.uses_tmap && cct->_conf->osd_auto_upgrade_tmap) {
_copy_up_tmap(ctx);
}
if (!obs.exists) {
case CEPH_OSD_OP_OMAPSETHEADER:
++ctx->num_write;
{
- if (oi.uses_tmap && osd->osd->cct->_conf->osd_auto_upgrade_tmap) {
+ if (oi.uses_tmap && cct->_conf->osd_auto_upgrade_tmap) {
_copy_up_tmap(ctx);
}
if (!obs.exists) {
result = -ENOENT;
break;
}
- if (oi.uses_tmap && osd->osd->cct->_conf->osd_auto_upgrade_tmap) {
+ if (oi.uses_tmap && cct->_conf->osd_auto_upgrade_tmap) {
_copy_up_tmap(ctx);
}
t.touch(coll, soid);
result = -ENOENT;
break;
}
- if (oi.uses_tmap && osd->osd->cct->_conf->osd_auto_upgrade_tmap) {
+ if (oi.uses_tmap && cct->_conf->osd_auto_upgrade_tmap) {
_copy_up_tmap(ctx);
}
t.touch(coll, soid);
// _prior_ to being committed; it will not get set with
// writeahead journaling, for instance.
if (repop->ctx->readable_stamp == utime_t())
- repop->ctx->readable_stamp = ceph_clock_now(osd->osd->cct);
+ repop->ctx->readable_stamp = ceph_clock_now(cct);
}
}
RepGather *repop = new RepGather(ctx, obc, rep_tid, info.last_complete);
- repop->start = ceph_clock_now(osd->osd->cct);
+ repop->start = ceph_clock_now(cct);
repop_queue.push_back(&repop->queue_item);
repop_map[repop->rep_tid] = repop;
osd_reqid_t reqid(osd->get_cluster_msgr_name(), 0, rep_tid);
OpContext *ctx = new OpContext(OpRequestRef(), reqid, ops,
&obc->obs, obc->ssc, this);
- ctx->mtime = ceph_clock_now(osd->osd->cct);
+ ctx->mtime = ceph_clock_now(cct);
ctx->at_version.epoch = get_osdmap()->get_epoch();
ctx->at_version.version = pg_log.get_head().version + 1;
if (size)
data_subset.insert(0, size);
- if (!osd->osd->cct->_conf->osd_recover_clone_overlap) {
+ if (!cct->_conf->osd_recover_clone_overlap) {
dout(10) << "calc_head_subsets " << head << " -- osd_recover_clone_overlap disabled" << dendl;
return;
}
}
- if (cloning.num_intervals() > osd->osd->cct->_conf->osd_recover_clone_overlap_limit) {
+ if (cloning.num_intervals() > cct->_conf->osd_recover_clone_overlap_limit) {
dout(10) << "skipping clone, too many holes" << dendl;
clone_subsets.clear();
cloning.clear();
if (size)
data_subset.insert(0, size);
- if (!osd->osd->cct->_conf->osd_recover_clone_overlap) {
+ if (!cct->_conf->osd_recover_clone_overlap) {
dout(10) << "calc_clone_subsets " << soid << " -- osd_recover_clone_overlap disabled" << dendl;
return;
}
<< " overlap " << next << dendl;
}
- if (cloning.num_intervals() > osd->osd->cct->_conf->osd_recover_clone_overlap_limit) {
+ if (cloning.num_intervals() > cct->_conf->osd_recover_clone_overlap_limit) {
dout(10) << "skipping clone, too many holes" << dendl;
clone_subsets.clear();
cloning.clear();
subop->set_priority(prio);
subop->ops = vector<OSDOp>(1);
subop->ops[0].op.op = CEPH_OSD_OP_PULL;
- subop->ops[0].op.extent.length = osd->osd->cct->_conf->osd_recovery_max_chunk;
+ subop->ops[0].op.extent.length = cct->_conf->osd_recovery_max_chunk;
subop->recovery_info = recovery_info;
subop->recovery_progress = progress;
msg->set_priority(prio);
for (;
(j != i->second.end() &&
- cost < osd->osd->cct->_conf->osd_max_push_cost &&
- pushes < osd->osd->cct->_conf->osd_max_push_objects) ;
+ cost < cct->_conf->osd_max_push_cost &&
+ pushes < cct->_conf->osd_max_push_objects) ;
++j) {
dout(20) << __func__ << ": sending push " << *j
<< " to osd." << i->first << dendl;
- cost += j->cost(osd->osd->cct);
+ cost += j->cost(cct);
pushes += 1;
msg->pushes.push_back(*j);
}
- msg->compute_cost(osd->osd->cct);
+ msg->compute_cost(cct);
osd->send_message_osd_cluster(msg, con);
}
}
msg->pgid = info.pgid;
msg->map_epoch = get_osdmap()->get_epoch();
msg->pulls.swap(i->second);
- msg->compute_cost(osd->osd->cct);
+ msg->compute_cost(cct);
osd->send_message_osd_cluster(msg, con);
}
}
new_progress.first = false;
}
- uint64_t available = osd->osd->cct->_conf->osd_recovery_max_chunk;
+ uint64_t available = cct->_conf->osd_recovery_max_chunk;
if (!progress.omap_complete) {
ObjectMap::ObjectMapIterator iter =
osd->store->get_omap_iterator(coll,
ObjectStore::Transaction *t = new ObjectStore::Transaction;
C_PG_MarkUnfoundLost *c = new C_PG_MarkUnfoundLost(this);
- utime_t mtime = ceph_clock_now(osd->osd->cct);
+ utime_t mtime = ceph_clock_now(cct);
info.last_update.epoch = get_osdmap()->get_epoch();
const pg_missing_t &missing = pg_log.get_missing();
map<hobject_t, pg_missing_t::item>::const_iterator m = missing.missing.begin();
++skipped;
} else {
int r = prepare_pull(
- soid, need, osd->osd->cct->_conf->osd_recovery_op_priority, &pulls);
+ soid, need, cct->_conf->osd_recovery_op_priority, &pulls);
switch (r) {
case PULL_YES:
++started;
pg_log.set_last_requested(v);
}
- send_pulls(osd->osd->cct->_conf->osd_recovery_op_priority, pulls);
+ send_pulls(cct->_conf->osd_recovery_op_priority, pulls);
return started;
}
dout(10) << __func__ << ": recover_object_replicas(" << soid << ")" << dendl;
map<hobject_t,pg_missing_t::item>::const_iterator r = m.missing.find(soid);
started += prep_object_replica_pushes(soid, r->second.need,
- osd->osd->cct->_conf->osd_recovery_op_priority,
+ cct->_conf->osd_recovery_op_priority,
&pushes);
}
}
- send_pushes(osd->osd->cct->_conf->osd_recovery_op_priority, pushes);
+ send_pushes(cct->_conf->osd_recovery_op_priority, pushes);
return started;
}
prep_backfill_object_push(
i->first, i->second.first, i->second.second, backfill_target, &pushes);
}
- send_pushes(osd->osd->cct->_conf->osd_recovery_op_priority, pushes);
+ send_pushes(cct->_conf->osd_recovery_op_priority, pushes);
release_waiting_for_backfill_pos();
dout(5) << "backfill_pos is " << backfill_pos << " and pinfo.last_backfill is "
ObjectContextRef obc = get_object_context(oid, false);
obc->ondisk_read_lock();
(*pushes)[peer].push_back(PushOp());
- prep_push_to_replica(obc, oid, peer, osd->osd->cct->_conf->osd_recovery_op_priority,
+ prep_push_to_replica(obc, oid, peer, cct->_conf->osd_recovery_op_priority,
&((*pushes)[peer].back()));
obc->ondisk_read_unlock();
}
assert(info.last_update >= pg_log.get_tail()); // otherwise we need some help!
- if (!osd->osd->cct->_conf->osd_debug_verify_stray_on_activate)
+ if (!cct->_conf->osd_debug_verify_stray_on_activate)
return;
// just scan the log.