summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Just <sam.just@inktank.com>2013-08-30 14:25:32 -0700
committerSamuel Just <sam.just@inktank.com>2013-09-23 22:54:57 -0700
commit85cd5b9520779dbe2315101735b66e900c7549bf (patch)
tree112706133c28fd895b35888a78a179157085e652
parent8a9b79f5e064dee642cb2ddee19bf2ce66b99b05 (diff)
downloadceph-85cd5b9520779dbe2315101735b66e900c7549bf.tar.gz
ReplicatedPG/Backend: shuffle sub_op_push over to ReplicatedBackend
Signed-off-by: Samuel Just <sam.just@inktank.com>
-rw-r--r--src/osd/OSD.h14
-rw-r--r--src/osd/ReplicatedBackend.h2
-rw-r--r--src/osd/ReplicatedPG.cc7
-rw-r--r--src/osd/ReplicatedPG.h13
4 files changed, 19 insertions, 17 deletions
diff --git a/src/osd/OSD.h b/src/osd/OSD.h
index c2f45196870..17256d61702 100644
--- a/src/osd/OSD.h
+++ b/src/osd/OSD.h
@@ -635,6 +635,20 @@ public:
OSDService(OSD *osd);
~OSDService();
};
+
+struct C_OSD_SendMessageOnConn: public Context {
+ OSDService *osd;
+ Message *reply;
+ ConnectionRef conn;
+ C_OSD_SendMessageOnConn(
+ OSDService *osd,
+ Message *reply,
+ ConnectionRef conn) : osd(osd), reply(reply), conn(conn) {}
+ void finish(int) {
+ osd->send_message_osd_cluster(reply, conn.get());
+ }
+};
+
class OSD : public Dispatcher,
public md_config_obs_t {
/** OSD **/
diff --git a/src/osd/ReplicatedBackend.h b/src/osd/ReplicatedBackend.h
index 4c20f248650..ba79d06de5f 100644
--- a/src/osd/ReplicatedBackend.h
+++ b/src/osd/ReplicatedBackend.h
@@ -200,7 +200,7 @@ private:
// Reverse mapping from osd peer to objects beging pulled from that peer
map<int, set<hobject_t> > pull_from_peer;
- void sub_op_push(OpRequestRef op) {}
+ void sub_op_push(OpRequestRef op);
void sub_op_push_reply(OpRequestRef op) {}
void sub_op_pull(OpRequestRef op) {}
diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc
index cc689447891..389eeb42c04 100644
--- a/src/osd/ReplicatedPG.cc
+++ b/src/osd/ReplicatedPG.cc
@@ -80,6 +80,7 @@ PGLSFilter::~PGLSFilter()
{
}
+
// ======================
// PGBackend::Listener
@@ -6862,7 +6863,7 @@ void ReplicatedPG::trim_pushed_data(
/** op_push
* NOTE: called from opqueue.
*/
-void ReplicatedPG::sub_op_push(OpRequestRef op)
+void ReplicatedBackend::sub_op_push(OpRequestRef op)
{
op->mark_started();
MOSDSubOp *m = static_cast<MOSDSubOp *>(op->request);
@@ -6898,9 +6899,9 @@ void ReplicatedPG::sub_op_push(OpRequestRef op)
assert(entity_name_t::TYPE_OSD == m->get_connection()->peer_type);
handle_push(m->get_source().num(), pop, &resp, t);
t->register_on_complete(new C_OSD_SendMessageOnConn(
- osd, reply, m->get_connection()));
+ osd, reply, m->get_connection()));
}
- osd->store->queue_transaction(osr.get(), t);
+ get_parent()->queue_transaction(t);
return;
}
diff --git a/src/osd/ReplicatedPG.h b/src/osd/ReplicatedPG.h
index 0a670ae835e..5581c601495 100644
--- a/src/osd/ReplicatedPG.h
+++ b/src/osd/ReplicatedPG.h
@@ -813,18 +813,6 @@ protected:
pg->_committed_pushed_object(epoch, last_complete);
}
};
- struct C_OSD_SendMessageOnConn: public Context {
- OSDService *osd;
- Message *reply;
- ConnectionRef conn;
- C_OSD_SendMessageOnConn(
- OSDService *osd,
- Message *reply,
- ConnectionRef conn) : osd(osd), reply(reply), conn(conn) {}
- void finish(int) {
- osd->send_message_osd_cluster(reply, conn.get());
- }
- };
struct C_OSD_CompletedPull : public Context {
ReplicatedPGRef pg;
hobject_t hoid;
@@ -862,7 +850,6 @@ protected:
void _applied_recovered_object_replica();
void _committed_pushed_object(epoch_t epoch, eversion_t lc);
void recover_got(hobject_t oid, eversion_t v);
- void sub_op_push(OpRequestRef op);
void _failed_push(int from, const hobject_t &soid);
void sub_op_push_reply(OpRequestRef op);
bool handle_push_reply(int peer, PushReplyOp &op, PushOp *reply);