]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
os/bluestore: shard extent map
authorSage Weil <sage@redhat.com>
Fri, 2 Sep 2016 16:50:39 +0000 (12:50 -0400)
committerSage Weil <sage@redhat.com>
Wed, 7 Sep 2016 15:26:05 +0000 (11:26 -0400)
commit4fbb1efd1d1e63d063baf0a1ac58e979da4340b3
tree9b8b8f3e4f1f46c5e4904aa96b854870d3ed1b25
parent58030cc03c5672c17a34a262c3535a6dc0632174
os/bluestore: shard extent map

Rewrote much of the persistence of onode metadata.  The
highlights:

 - extents and blobs stored together (the blob with the
   first referencing extent).
 - extents sharded across multiple k/v keys
 - if a blob if referenced from multiple blobs, it's
   stored in the onode key (called a "spanning blob").
 - when we clone a blob we copy the metadata, but mark
   it shared and put (just) the ref_map on the underlying
   blocks in a shared_blob key.  at this point we also
   assign a globally unique id (sbid = shared blob id)
   so the key has a unique name.
 - we instantiate a SharedBlob in memory regardless of
   whether we need to load the ref_map (which is only
   needed for deallocations!).  the BufferSpace is
   attached to this SharedBlob so we get unified caching
   across clones.

Signed-off-by: Sage Weil <sage@redhat.com>
src/common/config_opts.h
src/os/bluestore/BlueStore.cc
src/os/bluestore/BlueStore.h
src/os/bluestore/bluestore_types.cc
src/os/bluestore/bluestore_types.h
src/osd/osd_types.cc
src/test/objectstore/test_bluestore_types.cc