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>
common/bloom_filter: unit tests

Fun facts:

- fpp = false positive probability
- fpp is a function of insert count only
- at .1% fpp, we pay about 2 bytes per insert
- at 1-2% fpp, we pay about 1 byte per insert
- at 15% fpp, we pay about .5 bytes per insert

Signed-off-by: Sage Weil <sage@inktank.com>
common/bloom_filter: test behavior of sequences of bloom filters

Signed-off-by: Sage Weil <sage@inktank.com>
osd: add bloom_[fpp,period] to pg_pool_t

Add pool properties to control what type of bloom filter the OSD should track
for each PG.

Signed-off-by: Sage Weil <sage@inktank.com>
osd: add last_archived_bloom to pg_info_t

This field will track the most recent eversion recorded in an archived
bloom_filter.  Any events after this point in the pg log have not yet been
archived and should therefore be included in the in-memory bloom filter.

Signed-off-by: Sage Weil <sage@inktank.com>
wip
common/bloom_filter: fix whitespace

Signed-off-by: Sage Weil <sage@inktank.com>
COPYING: make note of common/bloom_filer.hpp (boost) license

Signed-off-by: Sage Weil <sage@inktank.com>
osd/PG: add bloom_oid

Signed-off-by: Sage Weil <sage@inktank.com>
common/bloom_filter: insert/contains methods for uint32_t

This will let us pass in an hobject_t::hash directly (for example) without
rehashing a string.

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