From: Kefu Chai Date: Wed, 4 Dec 2019 15:46:21 +0000 (+0800) Subject: osd: use accessors to access OSDService X-Git-Tag: v15.1.0~585^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=95d0962c986b211999fa0183d9af97c7ccb692c2;p=ceph.git osd: use accessors to access OSDService instead of accessing OSDService's member variable directly, it would be easier if we can use accessors to do this. Signed-off-by: Kefu Chai --- diff --git a/src/osd/OSD.h b/src/osd/OSD.h index 58ef72b73436..d6b5bcac5f38 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -515,6 +515,12 @@ public: promote_counter.finish(bytes); } void promote_throttle_recalibrate(); + unsigned get_num_shards() const { + return m_objecter_finishers; + } + Finisher* get_objecter_finisher(int shard) { + return objecter_finishers[shard]; + } // -- Objecter, for tiering reads/writes from/to other OSDs -- Objecter *objecter; diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index 0aa36d41c0aa..579b023914b2 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -2584,11 +2584,10 @@ int PrimaryLogPG::do_manifest_flush(OpRequestRef op, ObjectContextRef obc, Flush fin->last_offset = last_offset; manifest_fop->chunks++; - unsigned n = info.pgid.hash_to_shard(osd->m_objecter_finishers); tid = osd->objecter->mutate( tgt_soid.oid, oloc, obj_op, snapc, ceph::real_clock::from_ceph_timespec(obc->obs.oi.mtime), - flags, new C_OnFinisher(fin, osd->objecter_finishers[n])); + flags, new C_OnFinisher(fin, osd->get_objecter_finisher(get_pg_shard()))); fin->tid = tid; manifest_fop->io_tids[iter->first] = tid; @@ -3071,11 +3070,10 @@ void PrimaryLogPG::do_proxy_read(OpRequestRef op, ObjectContextRef obc) C_ProxyRead *fin = new C_ProxyRead(this, soid, get_last_peering_reset(), prdop); - unsigned n = info.pgid.hash_to_shard(osd->m_objecter_finishers); ceph_tid_t tid = osd->objecter->read( soid.oid, oloc, obj_op, m->get_snapid(), NULL, - flags, new C_OnFinisher(fin, osd->objecter_finishers[n]), + flags, new C_OnFinisher(fin, osd->get_objecter_finisher(get_pg_shard())), &prdop->user_version, &prdop->data_offset, m->get_features()); @@ -3268,11 +3266,10 @@ void PrimaryLogPG::do_proxy_write(OpRequestRef op, ObjectContextRef obc) C_ProxyWrite_Commit *fin = new C_ProxyWrite_Commit( this, soid, get_last_peering_reset(), pwop); - unsigned n = info.pgid.hash_to_shard(osd->m_objecter_finishers); ceph_tid_t tid = osd->objecter->mutate( soid.oid, oloc, obj_op, snapc, ceph::real_clock::from_ceph_timespec(pwop->mtime), - flags, new C_OnFinisher(fin, osd->objecter_finishers[n]), + flags, new C_OnFinisher(fin, osd->get_objecter_finisher(get_pg_shard())), &pwop->user_version, pwop->reqid); fin->tid = tid; pwop->objecter_tid = tid; @@ -3447,10 +3444,9 @@ void PrimaryLogPG::refcount_manifest(ObjectContextRef obc, object_locator_t oloc Context *c = nullptr; if (cb) { - unsigned n = info.pgid.hash_to_shard(osd->m_objecter_finishers); C_SetManifestRefCountDone *fin = new C_SetManifestRefCountDone(cb, obc->obs.oi.soid); - c = new C_OnFinisher(fin, osd->objecter_finishers[n]); + c = new C_OnFinisher(fin, osd->get_objecter_finisher(get_pg_shard())); } auto tid = osd->objecter->mutate( @@ -3518,11 +3514,10 @@ void PrimaryLogPG::do_proxy_chunked_read(OpRequestRef op, ObjectContextRef obc, fin->obc = obc; fin->req_total_len = req_total_len; - unsigned n = info.pgid.hash_to_shard(osd->m_objecter_finishers); ceph_tid_t tid = osd->objecter->read( soid.oid, oloc, obj_op, m->get_snapid(), NULL, - flags, new C_OnFinisher(fin, osd->objecter_finishers[n]), + flags, new C_OnFinisher(fin, osd->get_objecter_finisher(get_pg_shard())), &prdop->user_version, &prdop->data_offset, m->get_features()); @@ -9022,9 +9017,8 @@ void PrimaryLogPG::_copy_some(ObjectContextRef obc, CopyOpRef cop) C_Copyfrom *fin = new C_Copyfrom(this, obc->obs.oi.soid, get_last_peering_reset(), cop); - unsigned n = info.pgid.hash_to_shard(osd->m_objecter_finishers); gather.set_finisher(new C_OnFinisher(fin, - osd->objecter_finishers[n])); + osd->get_objecter_finisher(get_pg_shard()))); ceph_tid_t tid = osd->objecter->read(cop->src.oid, cop->oloc, op, cop->src.snap, NULL, @@ -9111,14 +9105,14 @@ void PrimaryLogPG::_copy_some_manifest(ObjectContextRef obc, CopyOpRef cop, uint C_CopyChunk *fin = new C_CopyChunk(this, obc->obs.oi.soid, get_last_peering_reset(), cop); fin->offset = obj_offset; - unsigned n = info.pgid.hash_to_shard(osd->m_objecter_finishers); - - ceph_tid_t tid = osd->objecter->read(soid.oid, oloc, op, - sub_cop->src.snap, NULL, - flags, - new C_OnFinisher(fin, osd->objecter_finishers[n]), - // discover the object version if we don't know it yet - sub_cop->results.user_version ? NULL : &sub_cop->results.user_version); + + ceph_tid_t tid = osd->objecter->read( + soid.oid, oloc, op, + sub_cop->src.snap, NULL, + flags, + new C_OnFinisher(fin, osd->get_objecter_finisher(get_pg_shard())), + // discover the object version if we don't know it yet + sub_cop->results.user_version ? NULL : &sub_cop->results.user_version); fin->tid = tid; sub_cop->objecter_tid = tid; if (last_offset < iter->first) { @@ -10139,13 +10133,12 @@ int PrimaryLogPG::start_flush( } C_Flush *fin = new C_Flush(this, soid, get_last_peering_reset()); - unsigned n = info.pgid.hash_to_shard(osd->m_objecter_finishers); ceph_tid_t tid = osd->objecter->mutate( soid.oid, base_oloc, o, snapc, ceph::real_clock::from_ceph_timespec(oi.mtime), CEPH_OSD_FLAG_IGNORE_OVERLAY | CEPH_OSD_FLAG_ENFORCE_SNAPC, new C_OnFinisher(fin, - osd->objecter_finishers[n])); + osd->get_objecter_finisher(get_pg_shard()))); /* we're under the pg lock and fin->finish() is grabbing that */ fin->tid = tid; fop->objecter_tid = tid; diff --git a/src/osd/PrimaryLogPG.h b/src/osd/PrimaryLogPG.h index bce20c6b19af..150ac08f2634 100644 --- a/src/osd/PrimaryLogPG.h +++ b/src/osd/PrimaryLogPG.h @@ -1511,6 +1511,9 @@ public: int get_cache_obj_count() { return object_contexts.get_count(); } + unsigned get_pg_shard() const { + return info.pgid.hash_to_shard(osd->get_num_shards()); + } void do_request( OpRequestRef& op, ThreadPool::TPHandle &handle) override;