From 37fe32619f64be5e78f0cdaa232f82e98f397fc3 Mon Sep 17 00:00:00 2001 From: shawn Date: Mon, 23 May 2016 01:44:27 -0400 Subject: [PATCH] osdc:replace ceph:atomic_t with std::atomic & changes affected by osdc_atomic_replacement. same work as https://github.com/ceph/ceph/pull/9138 Signed-off-by: Xiaowei Chen --- src/librados/RadosClient.cc | 2 +- src/mds/MDSDaemon.cc | 2 +- src/mds/MDSRank.cc | 2 +- src/osdc/Objecter.cc | 132 ++++++++++++++++++------------------ src/osdc/Objecter.h | 75 ++++++++++---------- 5 files changed, 107 insertions(+), 106 deletions(-) diff --git a/src/librados/RadosClient.cc b/src/librados/RadosClient.cc index 38dcb092dfa881..11a9e21c107858 100644 --- a/src/librados/RadosClient.cc +++ b/src/librados/RadosClient.cc @@ -331,7 +331,7 @@ void librados::RadosClient::shutdown() } bool need_objecter = false; - if (objecter && objecter->initialized.read()) { + if (objecter && objecter->initialized) { need_objecter = true; } diff --git a/src/mds/MDSDaemon.cc b/src/mds/MDSDaemon.cc index e7d9fe51b13fdf..b3dcff8aab358c 100644 --- a/src/mds/MDSDaemon.cc +++ b/src/mds/MDSDaemon.cc @@ -1079,7 +1079,7 @@ void MDSDaemon::suicide() mds_rank->shutdown(); } else { - if (objecter->initialized.read()) { + if (objecter->initialized) { objecter->shutdown(); } timer.shutdown(); diff --git a/src/mds/MDSRank.cc b/src/mds/MDSRank.cc index 188750a195dc4b..14fb23eabd6675 100644 --- a/src/mds/MDSRank.cc +++ b/src/mds/MDSRank.cc @@ -227,7 +227,7 @@ void MDSRankDispatcher::shutdown() // shut down cache mdcache->shutdown(); - if (objecter->initialized.read()) + if (objecter->initialized) objecter->shutdown(); monc->shutdown(); diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index c703488bd337c8..d9c4d0608c9b2d 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -194,7 +194,7 @@ void Objecter::update_crush_location() */ void Objecter::init() { - assert(!initialized.read()); + assert(!initialized); if (!logger) { PerfCountersBuilder pcb(cct, "objecter", l_osdc_first, l_osdc_last); @@ -343,7 +343,7 @@ void Objecter::init() cct->_conf->add_observer(this); - initialized.set(1); + initialized = true; } /* @@ -361,11 +361,11 @@ void Objecter::start() void Objecter::shutdown() { - assert(initialized.read()); + assert(initialized); unique_lock wl(rwlock); - initialized.set(0); + initialized = false; cct->_conf->remove_observer(this); @@ -518,7 +518,7 @@ void Objecter::_send_linger(LingerOp *info, o->mtime = info->mtime; o->target = info->target; - o->tid = last_tid.inc(); + o->tid = ++last_tid; // do not resend this; we will send a new op to reregister o->should_resend = false; @@ -651,7 +651,7 @@ void Objecter::_send_linger_ping(LingerOp *info) o->should_resend = false; _send_op_account(o); MOSDOp *m = _prepare_osd_op(o); - o->tid = last_tid.inc(); + o->tid = ++last_tid; _session_op_assign(info->session, o); _send_op(o, m); info->ping_tid = o->tid; @@ -845,7 +845,7 @@ struct C_DoWatchNotify : public Context { void Objecter::handle_watch_notify(MWatchNotify *m) { shared_lock l(rwlock); - if (!initialized.read()) { + if (!initialized) { return; } @@ -888,7 +888,7 @@ void Objecter::_do_watch_notify(LingerOp *info, MWatchNotify *m) ldout(cct, 10) << __func__ << " " << *m << dendl; shared_lock l(rwlock); - assert(initialized.read()); + assert(initialized); if (info->canceled) { l.unlock(); @@ -918,7 +918,7 @@ void Objecter::_do_watch_notify(LingerOp *info, MWatchNotify *m) bool Objecter::ms_dispatch(Message *m) { ldout(cct, 10) << __func__ << " " << cct << " " << *m << dendl; - if (!initialized.read()) + if (!initialized) return false; switch (m->get_type()) { @@ -1087,7 +1087,7 @@ void Objecter::_scan_requests(OSDSession *s, void Objecter::handle_osd_map(MOSDMap *m) { shunique_lock sul(rwlock, acquire_unique); - if (!initialized.read()) + if (!initialized) return; assert(osdmap); @@ -1985,7 +1985,7 @@ void Objecter::tick() // we are only called by C_Tick tick_event = 0; - if (!initialized.read()) { + if (!initialized) { // we raced with shutdown ldout(cct, 10) << __func__ << " raced with shutdown" << dendl; return; @@ -2041,7 +2041,7 @@ void Objecter::tick() if (found) toping.insert(s); } - if (num_homeless_ops.read() || !toping.empty()) { + if (num_homeless_ops || !toping.empty()) { _maybe_request_map(); } @@ -2059,7 +2059,7 @@ void Objecter::tick() } // Make sure we don't resechedule if we wake up after shutdown - if (initialized.read()) { + if (initialized) { tick_event = timer.reschedule_me(ceph::make_timespan( cct->_conf->objecter_tick_interval)); } @@ -2131,7 +2131,7 @@ void Objecter::_op_submit_with_budget(Op *op, shunique_lock& sul, ceph_tid_t *ptid, int *ctx_budget) { - assert(initialized.read()); + assert(initialized); assert(op->ops.size() == op->out_bl.size()); assert(op->ops.size() == op->out_rval.size()); @@ -2150,7 +2150,7 @@ void Objecter::_op_submit_with_budget(Op *op, shunique_lock& sul, if (osd_timeout > timespan(0)) { if (op->tid == 0) - op->tid = last_tid.inc(); + op->tid = ++last_tid; auto tid = op->tid; op->ontimeout = timer.add_event(osd_timeout, [this, tid]() { @@ -2162,16 +2162,16 @@ void Objecter::_op_submit_with_budget(Op *op, shunique_lock& sul, void Objecter::_send_op_account(Op *op) { - inflight_ops.inc(); + ++inflight_ops; // add to gather set(s) if (op->onack) { - num_unacked.inc(); + ++num_unacked; } else { ldout(cct, 20) << " note: not requesting ack" << dendl; } if (op->oncommit || op->oncommit_sync) { - num_uncommitted.inc(); + ++num_uncommitted; } else { ldout(cct, 20) << " note: not requesting commit" << dendl; } @@ -2312,7 +2312,7 @@ void Objecter::_op_submit(Op *op, shunique_lock& sul, ceph_tid_t *ptid) OSDSession::unique_lock sl(s->lock); if (op->tid == 0) - op->tid = last_tid.inc(); + op->tid = ++last_tid; ldout(cct, 10) << "_op_submit oid " << op->target.base_oid << " '" << op->target.base_oloc << "' '" @@ -2339,13 +2339,13 @@ void Objecter::_op_submit(Op *op, shunique_lock& sul, ceph_tid_t *ptid) sl.unlock(); put_session(s); - ldout(cct, 5) << num_unacked.read() << " unacked, " << num_uncommitted.read() + ldout(cct, 5) << num_unacked << " unacked, " << num_uncommitted << " uncommitted" << dendl; } int Objecter::op_cancel(OSDSession *s, ceph_tid_t tid, int r) { - assert(initialized.read()); + assert(initialized); OSDSession::unique_lock sl(s->lock); @@ -2368,10 +2368,10 @@ int Objecter::op_cancel(OSDSession *s, ceph_tid_t tid, int r) if (op->onack) { op->onack->complete(r); op->onack = NULL; - num_unacked.dec(); + --num_unacked; } if (op->oncommit || op->oncommit_sync) - num_uncommitted.dec(); + --num_uncommitted; if (op->oncommit) { op->oncommit->complete(r); op->oncommit = NULL; @@ -2801,7 +2801,7 @@ void Objecter::_session_op_assign(OSDSession *to, Op *op) to->ops[op->tid] = op; if (to->is_homeless()) { - num_homeless_ops.inc(); + ++num_homeless_ops; } ldout(cct, 15) << __func__ << " " << to->osd << " " << op->tid << dendl; @@ -2813,7 +2813,7 @@ void Objecter::_session_op_remove(OSDSession *from, Op *op) // from->lock is locked if (from->is_homeless()) { - num_homeless_ops.dec(); + --num_homeless_ops; } from->ops.erase(op->tid); @@ -2829,7 +2829,7 @@ void Objecter::_session_linger_op_assign(OSDSession *to, LingerOp *op) assert(op->session == NULL); if (to->is_homeless()) { - num_homeless_ops.inc(); + ++num_homeless_ops; } get_session(to); @@ -2846,7 +2846,7 @@ void Objecter::_session_linger_op_remove(OSDSession *from, LingerOp *op) // from->lock is locked unique if (from->is_homeless()) { - num_homeless_ops.dec(); + --num_homeless_ops; } from->linger_ops.erase(op->linger_id); @@ -2863,7 +2863,7 @@ void Objecter::_session_command_op_remove(OSDSession *from, CommandOp *op) // from->lock is locked if (from->is_homeless()) { - num_homeless_ops.dec(); + --num_homeless_ops; } from->command_ops.erase(op->tid); @@ -2880,7 +2880,7 @@ void Objecter::_session_command_op_assign(OSDSession *to, CommandOp *op) assert(op->tid); if (to->is_homeless()) { - num_homeless_ops.inc(); + --num_homeless_ops; } get_session(to); @@ -2929,12 +2929,12 @@ void Objecter::_cancel_linger_op(Op *op) assert(!op->should_resend); if (op->onack) { delete op->onack; - num_unacked.dec(); + --num_unacked; } if (op->oncommit || op->oncommit_sync) { delete op->oncommit; delete op->oncommit_sync; - num_uncommitted.dec(); + --num_uncommitted; } _finish_op(op, 0); @@ -2958,7 +2958,7 @@ void Objecter::_finish_op(Op *op, int r) assert(check_latest_map_ops.find(op->tid) == check_latest_map_ops.end()); - inflight_ops.dec(); + --inflight_ops; op->put(); } @@ -2996,7 +2996,7 @@ MOSDOp *Objecter::_prepare_osd_op(Op *op) op->target.paused = false; op->stamp = ceph::mono_clock::now(); - MOSDOp *m = new MOSDOp(client_inc.read(), op->tid, + MOSDOp *m = new MOSDOp(client_inc, op->tid, op->target.target_oid, op->target.target_oloc, op->target.pgid, osdmap->get_epoch(), @@ -3121,7 +3121,7 @@ void Objecter::unregister_op(Op *op) put_session(op->session); op->session = NULL; - inflight_ops.dec(); + --inflight_ops; } /* This function DOES put the passed message before returning */ @@ -3135,7 +3135,7 @@ void Objecter::handle_osd_op_reply(MOSDOpReply *m) int osd_num = (int)m->get_source().num(); shunique_lock sul(rwlock, ceph::acquire_shared); - if (!initialized.read()) { + if (!initialized) { m->put(); return; } @@ -3203,9 +3203,9 @@ void Objecter::handle_osd_op_reply(MOSDOpReply *m) if (m->is_redirect_reply()) { ldout(cct, 5) << " got redirect reply; redirecting" << dendl; if (op->onack) - num_unacked.dec(); + --num_unacked; if (op->oncommit || op->oncommit_sync) - num_uncommitted.dec(); + --num_uncommitted; _session_op_remove(s, op); sl.unlock(); put_session(s); @@ -3226,7 +3226,7 @@ void Objecter::handle_osd_op_reply(MOSDOpReply *m) // new tid s->ops.erase(op->tid); - op->tid = last_tid.inc(); + op->tid = ++last_tid; _send_op(op); sl.unlock(); @@ -3291,7 +3291,7 @@ void Objecter::handle_osd_op_reply(MOSDOpReply *m) op->replay_version = m->get_replay_version(); onack = op->onack; op->onack = 0; // only do callback once - num_unacked.dec(); + --num_unacked; logger->inc(l_osdc_op_ack); } if (m->is_ondisk() || rc) { @@ -3299,14 +3299,14 @@ void Objecter::handle_osd_op_reply(MOSDOpReply *m) ldout(cct, 15) << "handle_osd_op_reply safe" << dendl; oncommit = op->oncommit; op->oncommit = NULL; - num_uncommitted.dec(); + --num_uncommitted; logger->inc(l_osdc_op_commit); } if (op->oncommit_sync) { ldout(cct, 15) << "handle_osd_op_reply safe (sync)" << dendl; op->oncommit_sync->complete(rc); op->oncommit_sync = NULL; - num_uncommitted.dec(); + --num_uncommitted; logger->inc(l_osdc_op_commit); } } @@ -3320,7 +3320,7 @@ void Objecter::handle_osd_op_reply(MOSDOpReply *m) _finish_op(op, 0); } - ldout(cct, 5) << num_unacked.read() << " unacked, " << num_uncommitted.read() + ldout(cct, 5) << num_unacked << " unacked, " << num_uncommitted << " uncommitted" << dendl; // serialize completions @@ -3675,7 +3675,7 @@ int Objecter::create_pool_snap(int64_t pool, string& snap_name, PoolOp *op = new PoolOp; if (!op) return -ENOMEM; - op->tid = last_tid.inc(); + op->tid = ++last_tid; op->pool = pool; op->name = snap_name; op->onfinish = onfinish; @@ -3708,7 +3708,7 @@ int Objecter::allocate_selfmanaged_snap(int64_t pool, snapid_t *psnapid, ldout(cct, 10) << "allocate_selfmanaged_snap; pool: " << pool << dendl; PoolOp *op = new PoolOp; if (!op) return -ENOMEM; - op->tid = last_tid.inc(); + op->tid = ++last_tid; op->pool = pool; C_SelfmanagedSnap *fin = new C_SelfmanagedSnap(psnapid, onfinish); op->onfinish = fin; @@ -3736,7 +3736,7 @@ int Objecter::delete_pool_snap(int64_t pool, string& snap_name, PoolOp *op = new PoolOp; if (!op) return -ENOMEM; - op->tid = last_tid.inc(); + op->tid = ++last_tid; op->pool = pool; op->name = snap_name; op->onfinish = onfinish; @@ -3756,7 +3756,7 @@ int Objecter::delete_selfmanaged_snap(int64_t pool, snapid_t snap, << snap << dendl; PoolOp *op = new PoolOp; if (!op) return -ENOMEM; - op->tid = last_tid.inc(); + op->tid = ++last_tid; op->pool = pool; op->onfinish = onfinish; op->pool_op = POOL_OP_DELETE_UNMANAGED_SNAP; @@ -3780,7 +3780,7 @@ int Objecter::create_pool(string& name, Context *onfinish, uint64_t auid, PoolOp *op = new PoolOp; if (!op) return -ENOMEM; - op->tid = last_tid.inc(); + op->tid = ++last_tid; op->pool = 0; op->name = name; op->onfinish = onfinish; @@ -3822,7 +3822,7 @@ int Objecter::delete_pool(const string &pool_name, Context *onfinish) void Objecter::_do_delete_pool(int64_t pool, Context *onfinish) { PoolOp *op = new PoolOp; - op->tid = last_tid.inc(); + op->tid = ++last_tid; op->pool = pool; op->name = "delete"; op->onfinish = onfinish; @@ -3843,7 +3843,7 @@ int Objecter::change_pool_auid(int64_t pool, Context *onfinish, uint64_t auid) ldout(cct, 10) << "change_pool_auid " << pool << " to " << auid << dendl; PoolOp *op = new PoolOp; if (!op) return -ENOMEM; - op->tid = last_tid.inc(); + op->tid = ++last_tid; op->pool = pool; op->name = "change_pool_auid"; op->onfinish = onfinish; @@ -3894,7 +3894,7 @@ void Objecter::_pool_op_submit(PoolOp *op) void Objecter::handle_pool_op_reply(MPoolOpReply *m) { shunique_lock sul(rwlock, acquire_shared); - if (!initialized.read()) { + if (!initialized) { sul.unlock(); m->put(); return; @@ -3957,7 +3957,7 @@ void Objecter::handle_pool_op_reply(MPoolOpReply *m) int Objecter::pool_op_cancel(ceph_tid_t tid, int r) { - assert(initialized.read()); + assert(initialized); unique_lock wl(rwlock); @@ -3999,7 +3999,7 @@ void Objecter::get_pool_stats(list& pools, ldout(cct, 10) << "get_pool_stats " << pools << dendl; PoolStatOp *op = new PoolStatOp; - op->tid = last_tid.inc(); + op->tid = ++last_tid; op->pools = pools; op->pool_stats = result; op->onfinish = onfinish; @@ -4038,7 +4038,7 @@ void Objecter::handle_get_pool_stats_reply(MGetPoolStatsReply *m) ceph_tid_t tid = m->get_tid(); unique_lock wl(rwlock); - if (!initialized.read()) { + if (!initialized) { m->put(); return; } @@ -4062,7 +4062,7 @@ void Objecter::handle_get_pool_stats_reply(MGetPoolStatsReply *m) int Objecter::pool_stat_op_cancel(ceph_tid_t tid, int r) { - assert(initialized.read()); + assert(initialized); unique_lock wl(rwlock); @@ -4100,7 +4100,7 @@ void Objecter::get_fs_stats(ceph_statfs& result, Context *onfinish) unique_lock l(rwlock); StatfsOp *op = new StatfsOp; - op->tid = last_tid.inc(); + op->tid = ++last_tid; op->stats = &result; op->onfinish = onfinish; if (mon_timeout > timespan(0)) { @@ -4133,7 +4133,7 @@ void Objecter::_fs_stats_submit(StatfsOp *op) void Objecter::handle_fs_stats_reply(MStatfsReply *m) { unique_lock wl(rwlock); - if (!initialized.read()) { + if (!initialized) { m->put(); return; } @@ -4158,7 +4158,7 @@ void Objecter::handle_fs_stats_reply(MStatfsReply *m) int Objecter::statfs_op_cancel(ceph_tid_t tid, int r) { - assert(initialized.read()); + assert(initialized); unique_lock wl(rwlock); @@ -4227,7 +4227,7 @@ void Objecter::_sg_read_finish(vector& extents, void Objecter::ms_handle_connect(Connection *con) { ldout(cct, 10) << "ms_handle_connect " << con << dendl; - if (!initialized.read()) + if (!initialized) return; if (con->get_peer_type() == CEPH_ENTITY_TYPE_MON) @@ -4236,14 +4236,14 @@ void Objecter::ms_handle_connect(Connection *con) bool Objecter::ms_handle_reset(Connection *con) { - if (!initialized.read()) + if (!initialized) return false; if (con->get_peer_type() == CEPH_ENTITY_TYPE_OSD) { int osd = osdmap->identify_osd(con->get_peer_addr()); if (osd >= 0) { ldout(cct, 1) << "ms_handle_reset on osd." << osd << dendl; unique_lock wl(rwlock); - if (!initialized.read()) { + if (!initialized) { wl.unlock(); return false; } @@ -4282,7 +4282,7 @@ bool Objecter::ms_get_authorizer(int dest_type, AuthAuthorizer **authorizer, bool force_new) { - if (!initialized.read()) + if (!initialized) return false; if (dest_type == CEPH_ENTITY_TYPE_MON) return true; @@ -4319,7 +4319,7 @@ void Objecter::_dump_active(OSDSession *s) void Objecter::_dump_active() { - ldout(cct, 20) << "dump_active .. " << num_homeless_ops.read() << " homeless" + ldout(cct, 20) << "dump_active .. " << num_homeless_ops << " homeless" << dendl; for (map::iterator siter = osd_sessions.begin(); siter != osd_sessions.end(); ++siter) { @@ -4563,7 +4563,7 @@ void Objecter::handle_command_reply(MCommandReply *m) int osd_num = (int)m->get_source().num(); unique_lock wl(rwlock); - if (!initialized.read()) { + if (!initialized) { m->put(); return; } @@ -4613,7 +4613,7 @@ int Objecter::submit_command(CommandOp *c, ceph_tid_t *ptid) { shunique_lock sul(rwlock, ceph::acquire_unique); - ceph_tid_t tid = last_tid.inc(); + ceph_tid_t tid = ++last_tid; ldout(cct, 10) << "_submit_command " << tid << " " << c->cmd << dendl; c->tid = tid; @@ -4728,7 +4728,7 @@ void Objecter::_send_command(CommandOp *c) int Objecter::command_op_cancel(OSDSession *s, ceph_tid_t tid, int r) { - assert(initialized.read()); + assert(initialized); unique_lock wl(rwlock); @@ -4784,7 +4784,7 @@ Objecter::~Objecter() delete osdmap; assert(homeless_session->get_nref() == 1); - assert(num_homeless_ops.read() == 0); + assert(num_homeless_ops == 0); homeless_session->put(); assert(osd_sessions.empty()); diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index 163e7db384cbe5..74cad209e0435c 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -22,6 +22,7 @@ #include #include #include +#include #include @@ -1144,16 +1145,16 @@ class Objecter : public md_config_obs_t, public Dispatcher { using Dispatcher::cct; std::multimap crush_location; - atomic_t initialized; + atomic_bool initialized; private: - atomic64_t last_tid; - atomic_t inflight_ops; - atomic_t client_inc; + atomic_ullong last_tid; + atomic_uint inflight_ops; + atomic_int client_inc; uint64_t max_linger_id; - atomic_t num_unacked; - atomic_t num_uncommitted; - atomic_t global_op_flags; // flags which are applied to each IO op + atomic_uint num_unacked; + atomic_uint num_uncommitted; + atomic_uint global_op_flags; // flags which are applied to each IO op bool keep_balanced_budget; bool honor_osdmap_full; @@ -1829,7 +1830,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { map poolstat_ops; map statfs_ops; map pool_ops; - atomic_t num_homeless_ops; + atomic_uint num_homeless_ops; OSDSession *homeless_session; @@ -1967,7 +1968,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { double mon_timeout, double osd_timeout) : Dispatcher(cct_), messenger(m), monc(mc), finisher(fin), - osdmap(new OSDMap), initialized(0), last_tid(0), client_inc(-1), + osdmap(new OSDMap), initialized(false), last_tid(0), inflight_ops(0), client_inc(-1), max_linger_id(0), num_unacked(0), num_uncommitted(0), global_op_flags(0), keep_balanced_budget(false), honor_osdmap_full(true), last_seen_osdmap_version(0), last_seen_pgmap_version(0), @@ -2094,7 +2095,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { void op_submit(Op *op, ceph_tid_t *ptid = NULL, int *ctx_budget = NULL); bool is_active() { shared_lock l(rwlock); - return !((!inflight_ops.read()) && linger_ops.empty() && + return !((!inflight_ops) && linger_ops.empty() && poolstat_ops.empty() && statfs_ops.empty()); } @@ -2115,8 +2116,8 @@ class Objecter : public md_config_obs_t, public Dispatcher { void dump_pool_stat_ops(Formatter *fmt) const; void dump_statfs_ops(Formatter *fmt) const; - int get_client_incarnation() const { return client_inc.read(); } - void set_client_incarnation(int inc) { client_inc.set(inc); } + int get_client_incarnation() const { return client_inc; } + void set_client_incarnation(int inc) { client_inc = inc; } bool have_map(epoch_t epoch); /// wait for epoch; true if we already have it @@ -2127,15 +2128,15 @@ class Objecter : public md_config_obs_t, public Dispatcher { void _get_latest_version(epoch_t oldest, epoch_t neweset, Context *fin); /** Get the current set of global op flags */ - int get_global_op_flags() { return global_op_flags.read(); } + int get_global_op_flags() { return global_op_flags; } /** Add a flag to the global op flags, not really atomic operation */ void add_global_op_flags(int flag) { - global_op_flags.set(global_op_flags.read() | flag); + global_op_flags |= flag; } /** Clear the passed flags from the global op flag set, not really atomic operation */ void clear_global_op_flag(int flags) { - global_op_flags.set(global_op_flags.read() & ~flags); + global_op_flags &= ~flags; } /// cancel an in-progress request with the given return code @@ -2189,7 +2190,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { ceph::real_time mtime, int flags, Context *onack, Context *oncommit, version_t *objver = NULL, osd_reqid_t reqid = osd_reqid_t()) { - Op *o = new Op(oid, oloc, op.ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, op.ops, flags | global_op_flags | CEPH_OSD_FLAG_WRITE, onack, oncommit, objver); o->priority = op.priority; o->mtime = mtime; @@ -2217,7 +2218,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { Context *onack, version_t *objver = NULL, int *data_offset = NULL, uint64_t features = 0) { - Op *o = new Op(oid, oloc, op.ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, op.ops, flags | global_op_flags | CEPH_OSD_FLAG_READ, onack, NULL, objver, data_offset); o->priority = op.priority; o->snapid = snapid; @@ -2250,7 +2251,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { Context *onack, epoch_t *reply_epoch, int *ctx_budget) { Op *o = new Op(object_t(), oloc, - op.ops, flags | global_op_flags.read() | CEPH_OSD_FLAG_READ, + op.ops, flags | global_op_flags | CEPH_OSD_FLAG_READ, onack, NULL, NULL); o->target.precalc_pgid = true; o->target.base_pgid = pg_t(hash, oloc.pool); @@ -2337,7 +2338,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { int i = init_ops(ops, 1, extra_ops); ops[i].op.op = CEPH_OSD_OP_STAT; C_Stat *fin = new C_Stat(psize, pmtime, onfinish); - Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, flags | global_op_flags | CEPH_OSD_FLAG_READ, fin, 0, objver); o->snapid = snap; o->outbl = &fin->bl; @@ -2368,7 +2369,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { ops[i].op.extent.truncate_size = 0; ops[i].op.extent.truncate_seq = 0; ops[i].op.flags = op_flags; - Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, flags | global_op_flags | CEPH_OSD_FLAG_READ, onfinish, 0, objver); o->snapid = snap; o->outbl = pbl; @@ -2400,7 +2401,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { ops[i].op.extent.truncate_size = trunc_size; ops[i].op.extent.truncate_seq = trunc_seq; ops[i].op.flags = op_flags; - Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, flags | global_op_flags | CEPH_OSD_FLAG_READ, onfinish, 0, objver); o->snapid = snap; o->outbl = pbl; @@ -2419,7 +2420,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { ops[i].op.extent.length = len; ops[i].op.extent.truncate_size = 0; ops[i].op.extent.truncate_seq = 0; - Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, flags | global_op_flags | CEPH_OSD_FLAG_READ, onfinish, 0, objver); o->snapid = snap; o->outbl = pbl; @@ -2438,7 +2439,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { ops[i].op.xattr.value_len = 0; if (name) ops[i].indata.append(name); - Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, flags | global_op_flags | CEPH_OSD_FLAG_READ, onfinish, 0, objver); o->snapid = snap; o->outbl = pbl; @@ -2455,7 +2456,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { int i = init_ops(ops, 1, extra_ops); ops[i].op.op = CEPH_OSD_OP_GETXATTRS; C_GetAttrs *fin = new C_GetAttrs(attrset, onfinish); - Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, flags | global_op_flags | CEPH_OSD_FLAG_READ, fin, 0, objver); o->snapid = snap; o->outbl = &fin->bl; @@ -2468,7 +2469,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { snapid_t snap, bufferlist *pbl, int flags, Context *onfinish, version_t *objver = NULL, ObjectOperation *extra_ops = NULL) { - return read(oid, oloc, 0, 0, snap, pbl, flags | global_op_flags.read() | + return read(oid, oloc, 0, 0, snap, pbl, flags | global_op_flags | CEPH_OSD_FLAG_READ, onfinish, objver, extra_ops); } @@ -2479,7 +2480,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { const SnapContext& snapc, int flags, Context *onack, Context *oncommit, version_t *objver = NULL) { - Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, flags | global_op_flags | CEPH_OSD_FLAG_WRITE, onack, oncommit, objver); o->mtime = mtime; o->snapc = snapc; @@ -2502,7 +2503,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { ops[i].op.extent.truncate_seq = 0; ops[i].indata = bl; ops[i].op.flags = op_flags; - Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, flags | global_op_flags | CEPH_OSD_FLAG_WRITE, onack, oncommit, objver); o->mtime = mtime; o->snapc = snapc; @@ -2535,7 +2536,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { ops[i].op.extent.truncate_size = 0; ops[i].op.extent.truncate_seq = 0; ops[i].indata = bl; - Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, flags | global_op_flags | CEPH_OSD_FLAG_WRITE, onack, oncommit, objver); o->mtime = mtime; o->snapc = snapc; @@ -2570,7 +2571,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { ops[i].op.extent.truncate_seq = trunc_seq; ops[i].indata = bl; ops[i].op.flags = op_flags; - Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, flags | global_op_flags | CEPH_OSD_FLAG_WRITE, onack, oncommit, objver); o->mtime = mtime; o->snapc = snapc; @@ -2591,7 +2592,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { ops[i].op.extent.length = bl.length(); ops[i].indata = bl; ops[i].op.flags = op_flags; - Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, flags | global_op_flags | CEPH_OSD_FLAG_WRITE, onack, oncommit, objver); o->mtime = mtime; o->snapc = snapc; @@ -2625,7 +2626,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { ops[i].op.writesame.data_length = bl.length(); ops[i].indata = bl; ops[i].op.flags = op_flags; - Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, flags | global_op_flags | CEPH_OSD_FLAG_WRITE, onack, oncommit, objver); o->mtime = mtime; o->snapc = snapc; @@ -2658,7 +2659,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { ops[i].op.extent.offset = trunc_size; ops[i].op.extent.truncate_size = trunc_size; ops[i].op.extent.truncate_seq = trunc_seq; - Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, flags | global_op_flags | CEPH_OSD_FLAG_WRITE, onack, oncommit, objver); o->mtime = mtime; o->snapc = snapc; @@ -2675,7 +2676,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { ops[i].op.op = CEPH_OSD_OP_ZERO; ops[i].op.extent.offset = off; ops[i].op.extent.length = len; - Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, flags | global_op_flags | CEPH_OSD_FLAG_WRITE, onack, oncommit, objver); o->mtime = mtime; o->snapc = snapc; @@ -2709,7 +2710,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { int i = init_ops(ops, 1, extra_ops); ops[i].op.op = CEPH_OSD_OP_CREATE; ops[i].op.flags = create_flags; - Op *o = new Op(oid, oloc, ops, global_flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, global_flags | global_op_flags | CEPH_OSD_FLAG_WRITE, onack, oncommit, objver); o->mtime = mtime; o->snapc = snapc; @@ -2725,7 +2726,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { vector ops; int i = init_ops(ops, 1, extra_ops); ops[i].op.op = CEPH_OSD_OP_DELETE; - Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, flags | global_op_flags | CEPH_OSD_FLAG_WRITE, onack, oncommit, objver); o->mtime = mtime; o->snapc = snapc; @@ -2756,7 +2757,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { if (name) ops[i].indata.append(name); ops[i].indata.append(bl); - Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, flags | global_op_flags | CEPH_OSD_FLAG_WRITE, onack, oncommit, objver); o->mtime = mtime; o->snapc = snapc; @@ -2776,7 +2777,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { ops[i].op.xattr.value_len = 0; if (name) ops[i].indata.append(name); - Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | + Op *o = new Op(oid, oloc, ops, flags | global_op_flags | CEPH_OSD_FLAG_WRITE, onack, oncommit, objver); o->mtime = mtime; o->snapc = snapc;