From 0efdd0a338935d1fbc567a9fc1e60889ba023e95 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 3 Feb 2017 14:32:19 -0500 Subject: [PATCH] osd: make use of MOSDOp::get_hobj() Prefer this to get_object_locator() whereever possible. Signed-off-by: Sage Weil --- src/osd/PG.cc | 10 +++++----- src/osd/PrimaryLogPG.cc | 40 +++++++++++----------------------------- 2 files changed, 16 insertions(+), 34 deletions(-) diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 03dc1c3152de2..f0bf90dc3e6b0 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -1862,18 +1862,18 @@ bool PG::op_has_sufficient_caps(OpRequestRef& op) OSDCap& caps = session->caps; session->put(); - const string &key = req->get_object_locator().key.empty() ? - req->get_oid().name : - req->get_object_locator().key; + const string &key = req->get_hobj().get_key().empty() ? + req->get_oid().name : + req->get_hobj().get_key(); - bool cap = caps.is_capable(pool.name, req->get_object_locator().nspace, + bool cap = caps.is_capable(pool.name, req->get_hobj().nspace, pool.auid, key, op->need_read_cap(), op->need_write_cap(), op->classes()); dout(20) << "op_has_sufficient_caps pool=" << pool.id << " (" << pool.name - << " " << req->get_object_locator().nspace + << " " << req->get_hobj().nspace << ") owner=" << pool.auid << " need_read_cap=" << op->need_read_cap() << " need_write_cap=" << op->need_write_cap() diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index 977a0dbca8d38..56954dba83b1a 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -1210,8 +1210,8 @@ void PrimaryLogPG::do_pg_op(OpRequestRef op) continue; // skip wrong namespace - if (m->get_object_locator().nspace != librados::all_nspaces && - candidate.get_namespace() != m->get_object_locator().nspace) + if (m->get_hobj().nspace != librados::all_nspaces && + candidate.get_namespace() != m->get_hobj().nspace) continue; if (filter && !pgls_filter(filter, candidate, filter_out)) @@ -1381,7 +1381,7 @@ void PrimaryLogPG::do_pg_op(OpRequestRef op) } // skip wrong namespace - if (candidate.get_namespace() != m->get_object_locator().nspace) + if (candidate.get_namespace() != m->get_hobj().nspace) continue; if (filter && !pgls_filter(filter, candidate, filter_out)) @@ -1769,9 +1769,8 @@ void PrimaryLogPG::do_op(OpRequestRef& op) dout(20) << __func__ << ": op " << *m << dendl; - hobject_t head(m->get_oid(), m->get_object_locator().key, - CEPH_NOSNAP, m->get_pg().ps(), - info.pgid.pool(), m->get_object_locator().nspace); + hobject_t head = m->get_hobj(); + head.snap = CEPH_NOSNAP; bool can_backoff = m->get_connection()->has_feature(CEPH_FEATURE_RADOS_BACKOFF); @@ -1845,16 +1844,14 @@ void PrimaryLogPG::do_op(OpRequestRef& op) osd->reply_op_error(op, -ENAMETOOLONG); return; } - if (m->get_object_locator().key.size() > - cct->_conf->osd_max_object_name_len) { + if (m->get_hobj().get_key().size() > cct->_conf->osd_max_object_name_len) { dout(4) << "do_op locator is longer than " << cct->_conf->osd_max_object_name_len << " bytes" << dendl; osd->reply_op_error(op, -ENAMETOOLONG); return; } - if (m->get_object_locator().nspace.size() > - cct->_conf->osd_max_object_namespace_len) { + if (m->get_hobj().nspace.size() > cct->_conf->osd_max_object_namespace_len) { dout(4) << "do_op namespace is longer than " << cct->_conf->osd_max_object_namespace_len << " bytes" << dendl; @@ -2038,12 +2035,7 @@ void PrimaryLogPG::do_op(OpRequestRef& op) ObjectContextRef obc; bool can_create = op->may_write() || op->may_cache(); hobject_t missing_oid; - hobject_t oid(m->get_oid(), - m->get_object_locator().key, - m->get_snapid(), - m->get_pg().ps(), - m->get_object_locator().get_pool(), - m->get_object_locator().nspace); + const hobject_t& oid = m->get_hobj(); // io blocked on obc? if (!m->has_flag(CEPH_OSD_FLAG_FLUSH) && @@ -2370,7 +2362,7 @@ PrimaryLogPG::cache_result_t PrimaryLogPG::maybe_handle_cache_detail( } MOSDOp *m = static_cast(op->get_req()); - const object_locator_t& oloc = m->get_object_locator(); + const object_locator_t oloc = m->get_object_locator(); if (op->need_skip_handle_cache()) { return cache_result_t::NOOP; @@ -2628,12 +2620,7 @@ void PrimaryLogPG::do_proxy_read(OpRequestRef op) object_locator_t oloc(m->get_object_locator()); oloc.pool = pool.info.tier_of; - hobject_t soid(m->get_oid(), - m->get_object_locator().key, - m->get_snapid(), - m->get_pg().ps(), - m->get_object_locator().get_pool(), - m->get_object_locator().nspace); + const hobject_t& soid = m->get_hobj(); unsigned flags = CEPH_OSD_FLAG_IGNORE_CACHE | CEPH_OSD_FLAG_IGNORE_OVERLAY; // pass through some original flags that make sense. @@ -2823,12 +2810,7 @@ void PrimaryLogPG::do_proxy_write(OpRequestRef op, const hobject_t& missing_oid) oloc.pool = pool.info.tier_of; SnapContext snapc(m->get_snap_seq(), m->get_snaps()); - hobject_t soid(m->get_oid(), - m->get_object_locator().key, - missing_oid.snap, - m->get_pg().ps(), - m->get_object_locator().get_pool(), - m->get_object_locator().nspace); + const hobject_t& soid = m->get_hobj(); unsigned flags = CEPH_OSD_FLAG_IGNORE_CACHE | CEPH_OSD_FLAG_IGNORE_OVERLAY; dout(10) << __func__ << " Start proxy write for " << *m << dendl; -- 2.39.5