librbd: skip zeroes when copying an image

This is the simple coarse-grained solution, but it works well in
common cases like a small base image resized with a bunch of empty
space at the end. Finer-grained sparseness can be copied by using rbd
{export,import}-diff.

Fixes: #6257
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
Merge pull request #1575 from jdurgin/wip-librbd-cp-sparse

librbd: skip zeroes when copying an image

Reviewed-by: Sage Weil <sage@inktank.com>
config: allow unsafe setting of config values

Allow callers to set config values even when there is no observer.

Signed-off-by: Sage Weil <sage@inktank.com>
os/FileStore: support osd_leveldb_* options via config_t::set_val()

Instead of feeding these values directly into the LevelDBStore, copy them
into the leveldb_* config options and let the implementation get them from
there.  This hides it more cleanly behind the interface.

Signed-off-by: Sage Weil <sage@inktank.com>
mon/MonitorDBStore: support mon_leveldb_* options via config_t::set_val()

Copy config options instead of poking behind LevelDBStore intrface.

Signed-off-by: Sage Weil <sage@inktank.com>
os/KeyValueDB: generic create(), test_init()

Let us create an implemenetation by name.  Include a test_init() method
that will instantiate an instance and verify it could start up.

Signed-off-by: Sage Weil <sage@inktank.com>
os/KeyValueDB: make compaction interface generic

Signed-off-by: Sage Weil <sage@inktank.com>
mon/MonitorDBStore: use generic KeyValueDB::create()

Signed-off-by: Sage Weil <sage@inktank.com>
os/FileStore: use generic KeyValueDB::create()

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

Signed-off-by: xinxin shu <xinxin.shu@intel.com>

Conflicts:

	configure.ac
	src/erasure-code/jerasure/gf-complete
	src/erasure-code/jerasure/jerasure
	src/os/FileStore.cc