]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/: replace bufferptr with bufferlist for attrs in recovery
authorSamuel Just <sam.just@inktank.com>
Thu, 30 Jan 2014 21:06:50 +0000 (13:06 -0800)
committerSamuel Just <sam.just@inktank.com>
Tue, 18 Feb 2014 04:12:15 +0000 (20:12 -0800)
Now we won't have to keep converting back and forth!

Signed-off-by: Samuel Just <sam.just@inktank.com>
src/messages/MOSDSubOp.h
src/osd/PGBackend.h
src/osd/ReplicatedBackend.h
src/osd/ReplicatedPG.cc
src/osd/ReplicatedPG.h
src/osd/osd_types.h

index 74022476f3e3104f9df5089f9871acebfdf6a095..9c405e60f3f8e097e115d1b0ccf59933b325c0f2 100644 (file)
@@ -65,7 +65,7 @@ public:
   eversion_t pg_trim_to;   // primary->replica: trim to here
   osd_peer_stat_t peer_stat;
 
-  map<string,bufferptr> attrset;
+  map<string,bufferlist> attrset;
 
   interval_set<uint64_t> data_subset;
   map<hobject_t, interval_set<uint64_t> > clone_subsets;
index 689e47b9d0e011c27a5bd5a42118698a1397f1ca..fe067effcd9406f701b3e80e803938c9b1620701 100644 (file)
 
      virtual ObjectContextRef get_obc(
        const hobject_t &hoid,
-       map<string, bufferptr> &attrs) = 0;
+       map<string, bufferlist> &attrs) = 0;
 
      virtual void op_applied(
        const eversion_t &applied_version) = 0;
index f910b2660e415e039c1742c85f5d8b2a0c4f1ba0..78ec6b4b6d62b632b747166d79f035eb005ec75b 100644 (file)
@@ -266,7 +266,7 @@ private:
                        const interval_set<uint64_t> &intervals_included,
                        bufferlist data_included,
                        bufferlist omap_header,
-                       map<string, bufferptr> &attrs,
+                       map<string, bufferlist> &attrs,
                        map<string, bufferlist> &omap_entries,
                        ObjectStore::Transaction *t);
   void submit_push_complete(ObjectRecoveryInfo &recovery_info,
index ac3abb1efcb03568af506ef81d09930428b3653a..10382df50f5d7f7a5261fa22bd7002ad868d48d8 100644 (file)
@@ -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<string, bufferptr> *attrs)
+                                                 map<string, bufferlist> *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<string, bufferptr>::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<string, bufferptr> *attrs)
+  map<string, bufferlist> *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<uint64_t> &intervals_included,
   bufferlist data_included,
   bufferlist omap_header,
-  map<string, bufferptr> &attrs,
+  map<string, bufferlist> &attrs,
   map<string, bufferlist> &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) {
index 10298efbe74dec441b000da5b444ccd7b5b08367..0a671e62641bf663982f4b7579f46d2c62bc6aa2 100644 (file)
@@ -329,7 +329,7 @@ public:
   }
   ObjectContextRef get_obc(
     const hobject_t &hoid,
-    map<string, bufferptr> &attrs) {
+    map<string, bufferlist> &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<string, bufferptr> *attrs = 0
+    map<string, bufferlist> *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<string, bufferptr> *attrs = 0
+    map<string, bufferlist> *attrs = 0
     );
   void register_snapset_context(SnapSetContext *ssc) {
     Mutex::Locker l(snapset_contexts_lock);
index c6895f5f3aa7bb97a4c6cd831855067a591a41f7..0b0ea65a740f0bdbb9a53be9c5a537fd85b2526e 100644 (file)
@@ -2928,7 +2928,7 @@ struct PushOp {
   interval_set<uint64_t> data_included;
   bufferlist omap_header;
   map<string, bufferlist> omap_entries;
-  map<string, bufferptr> attrset;
+  map<string, bufferlist> attrset;
 
   ObjectRecoveryInfo recovery_info;
   ObjectRecoveryProgress before_progress;