ObjectStore,Context: add register_on_complete

Signed-off-by: Samuel Just <sam.just@inktank.com>
ObjectStore: only register non-null contexts

Signed-off-by: Samuel Just <sam.just@inktank.com>
osd: do not use temp_coll for single-step pushes

If we are recovering an object in a single step, there is no need to
write it to temp and then move it.  Avoiding that is a very good thing
when the FileStore has to do an fsync() for non-btrfs fs's.

Signed-off-by: Sage Weil <sage@inktank.com>

Conflicts:
	src/osd/ReplicatedPG.cc
osd_types: add PushOp, PushReplyOp PullOp

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: submit_push_data must take recovery_info as non-const

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>
Merge branch 'wip-small-object-recovery'

Conflicts:
	src/include/ceph_features.h

Reviewed-by: Sage Weil <sage@inktank.com>
Fixes: #5278