osd: move pow2_hist_t out of osd_types and into include/

This has only been used for the OSD so far, but as with the rest
of the OpRequest stuff, it's actually pretty generic.

Signed-off-by: Greg Farnum <greg@inktank.com>
OpRequest: remove obsolete comment about ref-counting (use OpRequestRef!)

Signed-off-by: Greg Farnum <greg@inktank.com>
OpTracker: start making the OpTracker into a generic

We're starting by templating the create_request function and having
the OpTracker work in terms of TrackedOp[Ref]s intead of
OpRequest[Ref]s. This involves moving a bunch of stuff into the
base-class TrackedOp.

Signed-off-by: Greg Farnum <greg@inktank.com>
OpTracker: add an init_from_message() to the TrackedOp interface

This can be used for the concrete implementations to gather any
extra data out of the message and do whatever extra setup based
on that they want. The OpTracker will call this after doing all its
internal setup but before anybody else gets to see the TrackedOp.

Signed-off-by: Greg Farnum <greg@inktank.com>
OpTracker: move the OpTracker and OpHistory into common/TrackedOp.[h|cc]

Signed-off-by: Greg Farnum <greg@inktank.com>
OpTracker: remove the references to "osd" in config variables

We may want to have daemon-specific settings in the future, but that
will be a small interface change and in the mean time this keeps a clear
demarcation between OSD and OpTracker infrastructure.

Signed-off-by: Greg Farnum <greg@inktank.com>
OpTracker: move OpTracker pointer and some init code into TrackedOp

Clean up some member privacy issues while we're working on them.

Signed-off-by: Greg Farnum <greg@inktank.com>
osd: change how we work around an interface limitation.

If this had ever actually been triggered we would have hit an assert
in the OpRequest destructor that op->request is non-NULL.

Signed-off-by: Greg Farnum <greg@inktank.com>
OpTracker: include a destructor for the TrackedOp base class.

Our method of handling the OpRequest destructor is a little weird,
but we're about to get rid of the request member finagling.

Signed-off-by: Greg Farnum <greg@inktank.com>
osd: use TrackedOp::get_req() instead of direct access to the request.

Signed-off-by: Greg Farnum <greg@inktank.com>
OpTracker: provide a default implementation of TrackedOp::state_string

We're moving towards dynamically-allocated states instead of the static
ones this started with, so the whole bitmask-based thing doesn't make
much sense any more. Assume people won't use that and provide a default.

Signed-off-by: Greg Farnum <greg@inktank.com>
OpTracker: demand that a TrackedOp gets to own its Message for life.

Signed-off-by: Greg Farnum <greg@inktank.com>
OpTracker: get rid of TrackedOp::received_time for the Message

Signed-off-by: Greg Farnum <greg@inktank.com>
common/bloom_filter: make mode match formatting

3 space tabs.. blech.  Let's not change it now, though.

Signed-off-by: Sage Weil <sage@inktank.com>
common/bloom_filter: make optimal parameter calculation static

We pass the ctor our target behavior and calculate parameters based on
that.  Avoid storing the target behavior, and make that calc a static
method.  And add a new ctor that takes the parameters explicitly.

Signed-off-by: Sage Weil <sage@inktank.com>
common/bloom_filter: make bloom_filter encodable

Signed-off-by: Sage Weil <sage@inktank.com>
common/bloom_filter: move header from include/

Signed-off-by: Sage Weil <sage@inktank.com>
ReplicatedPG: update pg stats correctly when doing a copy

The obs.oi.size needs to updated in the middle so that we actually
change the stats -- this got set backwards by mistake during one
of the refactors to support large objects!
(See 4e29e362e7981634d751ee982144fbf602782a9a)

Signed-off-by: Greg Farnum <greg@inktank.com>
ReplicatedPG: copy: do not use an OpContext in _copy_some

Signed-off-by: Greg Farnum <greg@inktank.com>
ReplicatedPG: copy: remove most references to OpContext from process_copy_chunk

Signed-off-by: Greg Farnum <greg@inktank.com>