]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
messages/MOSDPGPull: make pulls vector private
authorSage Weil <sage@redhat.com>
Thu, 16 Feb 2017 20:03:27 +0000 (15:03 -0500)
committerSage Weil <sage@redhat.com>
Mon, 20 Feb 2017 19:12:23 +0000 (14:12 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/messages/MOSDPGPull.h
src/osd/ReplicatedBackend.cc

index c274e06ef971996479bfcdb037278b2c19c3a51d..4a39b13875cb81f8ba24c3b5b87455bbed8f1539 100644 (file)
@@ -21,12 +21,12 @@ class MOSDPGPull : public MOSDFastDispatchOp {
   static const int HEAD_VERSION = 2;
   static const int COMPAT_VERSION = 1;
 
+  vector<PullOp> pulls;
 
 public:
   pg_shard_t from;
   spg_t pgid;
   epoch_t map_epoch;
-  vector<PullOp> pulls;
   uint64_t cost;
 
   epoch_t get_map_epoch() const override {
@@ -36,6 +36,13 @@ public:
     return pgid;
   }
 
+  void take_pulls(vector<PullOp> *outpulls) {
+    outpulls->swap(pulls);
+  }
+  void set_pulls(vector<PullOp> *inpulls) {
+    inpulls->swap(pulls);
+  }
+
   MOSDPGPull()
     : MOSDFastDispatchOp(MSG_OSD_PG_PULL, HEAD_VERSION, COMPAT_VERSION),
       cost(0)
@@ -82,9 +89,9 @@ public:
 
   void print(ostream& out) const {
     out << "MOSDPGPull(" << pgid
-       << " " << map_epoch
-       << " " << pulls;
-    out << ")";
+       << " e" << map_epoch
+       << " cost " << cost
+       << ")";
   }
 };
 
index 12c62c15cc1b333dd74ac0a138ef3f455db579c4..f98e76fae4ac83c6a931bc026854bc8b036758fa 100644 (file)
@@ -927,7 +927,7 @@ void ReplicatedBackend::_do_pull_response(OpRequestRef op)
     reply->set_priority(m->get_priority());
     reply->pgid = get_info().pgid;
     reply->map_epoch = m->map_epoch;
-    reply->pulls.swap(replies);
+    reply->set_pulls(&replies);
     reply->compute_cost(cct);
 
     t.register_on_complete(
@@ -945,11 +945,11 @@ void ReplicatedBackend::do_pull(OpRequestRef op)
   pg_shard_t from = m->from;
 
   map<pg_shard_t, vector<PushOp> > replies;
-  for (vector<PullOp>::iterator i = m->pulls.begin();
-       i != m->pulls.end();
-       ++i) {
+  vector<PullOp> pulls;
+  m->take_pulls(&pulls);
+  for (auto& i : pulls) {
     replies[from].push_back(PushOp());
-    handle_pull(from, *i, &(replies[from].back()));
+    handle_pull(from, i, &(replies[from].back()));
   }
   send_pushes(m->get_priority(), replies);
 }
@@ -1971,7 +1971,7 @@ void ReplicatedBackend::send_pulls(int prio, map<pg_shard_t, vector<PullOp> > &p
     msg->set_priority(prio);
     msg->pgid = get_parent()->primary_spg_t();
     msg->map_epoch = get_osdmap()->get_epoch();
-    msg->pulls.swap(i->second);
+    msg->set_pulls(&i->second);
     msg->compute_cost(cct);
     get_parent()->send_message_osd_cluster(msg, con);
   }