ObjectStore: only register non-null contexts

Signed-off-by: Samuel Just <sam.just@inktank.com>
osd_types: add PushOp, PushReplyOp PullOp

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: make submit_push_complete take a const recovery_info

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: add complete arg to submit_push_data

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: _committed_pushed_object don't pass op

Add a separate callback to handle marking the event and
the stats.

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: split send_push into build_push_op and send_push_op

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: pass a PushOp into handle_pull_response

This is the first step toward packaging multiple
pushes/pulls into a single message.

Signed-off-by: Samuel Just <sam.just@inktank.com>
OSD: convert handle_push to use PushOp

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: send pushes en mass in recover_replicas, recover_backfill

This way, the pushes might be later merged into a smaller number of
messages.

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: send pulls en masse in recover_primary

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: split handle_push_reply out of sub_op_push_reply

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: split handle_pull out of sub_op_pull

Signed-off-by: Samuel Just <sam.just@inktank.com>
messages/,osd_types: add messages for Push, PushReply, Pull

Signed-off-by: Samuel Just <sam.just@inktank.com>
OSD: add handlers for MOSDPG(Push|PushReply|Pull)

MOSDPG(Push|PushReply|Pull|SubOp|SubOpReply) need the
same thing checked prior to queueing the op, so they
share a templated handler.

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: add handlers for MOSDPG(Push|Pull|PushReply)

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: send compound messages to enlightened peers

Signed-off-by: Samuel Just <sam.just@inktank.com>
working