From f0b69b384bcd7fed035f2bf922b69b9d9eb620c0 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Thu, 30 Jan 2014 13:06:50 -0800 Subject: [PATCH] osd/: replace bufferptr with bufferlist for attrs in recovery Now we won't have to keep converting back and forth! Signed-off-by: Samuel Just --- src/messages/MOSDSubOp.h | 2 +- src/osd/PGBackend.h | 2 +- src/osd/ReplicatedBackend.h | 2 +- src/osd/ReplicatedPG.cc | 21 +++++++-------------- src/osd/ReplicatedPG.h | 6 +++--- src/osd/osd_types.h | 2 +- 6 files changed, 14 insertions(+), 21 deletions(-) diff --git a/src/messages/MOSDSubOp.h b/src/messages/MOSDSubOp.h index 74022476f3e31..9c405e60f3f8e 100644 --- a/src/messages/MOSDSubOp.h +++ b/src/messages/MOSDSubOp.h @@ -65,7 +65,7 @@ public: eversion_t pg_trim_to; // primary->replica: trim to here osd_peer_stat_t peer_stat; - map attrset; + map attrset; interval_set data_subset; map > clone_subsets; diff --git a/src/osd/PGBackend.h b/src/osd/PGBackend.h index 689e47b9d0e01..fe067effcd940 100644 --- a/src/osd/PGBackend.h +++ b/src/osd/PGBackend.h @@ -160,7 +160,7 @@ virtual ObjectContextRef get_obc( const hobject_t &hoid, - map &attrs) = 0; + map &attrs) = 0; virtual void op_applied( const eversion_t &applied_version) = 0; diff --git a/src/osd/ReplicatedBackend.h b/src/osd/ReplicatedBackend.h index f910b2660e415..78ec6b4b6d62b 100644 --- a/src/osd/ReplicatedBackend.h +++ b/src/osd/ReplicatedBackend.h @@ -266,7 +266,7 @@ private: const interval_set &intervals_included, bufferlist data_included, bufferlist omap_header, - map &attrs, + map &attrs, map &omap_entries, ObjectStore::Transaction *t); void submit_push_complete(ObjectRecoveryInfo &recovery_info, diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index ac3abb1efcb03..10382df50f5d7 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -6666,7 +6666,7 @@ ObjectContextRef ReplicatedPG::create_object_context(const object_info_t& oi, ObjectContextRef ReplicatedPG::get_object_context(const hobject_t& soid, bool can_create, - map *attrs) + map *attrs) { assert( attrs || !pg_log.get_missing().is_missing(soid) || @@ -6684,7 +6684,7 @@ ObjectContextRef ReplicatedPG::get_object_context(const hobject_t& soid, bufferlist bv; if (attrs) { assert(attrs->count(OI_ATTR)); - bv.push_back(attrs->find(OI_ATTR)->second); + bv = attrs->find(OI_ATTR)->second; } else { int r = pgbackend->objects_get_attr(soid, OI_ATTR, &bv); if (r < 0) { @@ -6719,13 +6719,7 @@ ObjectContextRef ReplicatedPG::get_object_context(const hobject_t& soid, if (pool.info.require_rollback()) { if (attrs) { - for (map::iterator i = attrs->begin(); - i != attrs->end(); - ++i) { - bufferlist bl; - bl.append(i->second); - obc->attr_cache.insert(make_pair(i->first, bl)); - } + obc->attr_cache = *attrs; } else { int r = pgbackend->objects_get_attrs( soid, @@ -7008,7 +7002,7 @@ SnapSetContext *ReplicatedPG::get_snapset_context( ps_t seed, bool can_create, const string& nspace, - map *attrs) + map *attrs) { Mutex::Locker l(snapset_contexts_lock); SnapSetContext *ssc; @@ -7031,7 +7025,7 @@ SnapSetContext *ReplicatedPG::get_snapset_context( } } else { assert(attrs->count(SS_ATTR)); - bv.push_back(attrs->find(SS_ATTR)->second); + bv = attrs->find(SS_ATTR)->second; } ssc = new SnapSetContext(oid); _register_snapset_context(ssc); @@ -7703,7 +7697,7 @@ void ReplicatedBackend::submit_push_data( const interval_set &intervals_included, bufferlist data_included, bufferlist omap_header, - map &attrs, + map &attrs, map &omap_entries, ObjectStore::Transaction *t) { @@ -8027,8 +8021,7 @@ int ReplicatedBackend::build_push_op(const ObjectRecoveryInfo &recovery_info, store->getattrs(coll, recovery_info.soid, out_op->attrset); // Debug - bufferlist bv; - bv.push_back(out_op->attrset[OI_ATTR]); + bufferlist bv = out_op->attrset[OI_ATTR]; object_info_t oi(bv); if (oi.version != recovery_info.version) { diff --git a/src/osd/ReplicatedPG.h b/src/osd/ReplicatedPG.h index 10298efbe74de..0a671e62641bf 100644 --- a/src/osd/ReplicatedPG.h +++ b/src/osd/ReplicatedPG.h @@ -329,7 +329,7 @@ public: } ObjectContextRef get_obc( const hobject_t &hoid, - map &attrs) { + map &attrs) { return get_object_context(hoid, true, &attrs); } void log_operation( @@ -802,7 +802,7 @@ protected: ObjectContextRef get_object_context( const hobject_t& soid, bool can_create, - map *attrs = 0 + map *attrs = 0 ); void context_registry_on_change(); @@ -830,7 +830,7 @@ protected: SnapSetContext *get_snapset_context( const object_t& oid, const string &key, ps_t seed, bool can_create, const string &nspace, - map *attrs = 0 + map *attrs = 0 ); void register_snapset_context(SnapSetContext *ssc) { Mutex::Locker l(snapset_contexts_lock); diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index c6895f5f3aa7b..0b0ea65a740f0 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -2928,7 +2928,7 @@ struct PushOp { interval_set data_included; bufferlist omap_header; map omap_entries; - map attrset; + map attrset; ObjectRecoveryInfo recovery_info; ObjectRecoveryProgress before_progress; -- 2.39.5