doc: Add OpenStack Havana documentation

New features appeared during the Havana cycle.
This patch offers a general update of the doc.

Signed-off-by: Sébastien Han <sebastien.han@enovance.com>
Merge branch 'leseb-doc-rbd-havana'

Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
librbd: call user completion after incrementing perfcounters

The perfcounters (and the ictx) are only valid while the image is
still open.  If the librbd user gets the callback for its last I/O,
then closes the image, the ictx and its perfcounters will be
invalid. If the AioCompletion object is has not run the rest of its
complete() method yet, it will access these now-invalid addresses,
possibly leading to a crash.

The AioCompletion object is independent of the ictx and does not
access it again after incrementing perfcounters, so avoid this race by
calling the user's callback after this step. The AioCompletion object
will be cleaned up by the rest of complete_request(), independent of
the ImageCtx.

Fixes: #5426
Backport: dumpling, emperor
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
Merge pull request #1000 from ceph/wip-rbd-tinc-5426

fix #5426 race in librbd

Reviewed-by: Sage Weil <sage@inktank.com>
erasure-code: add chunk size calculation helpers

With the current erasure code interface, figuring out the size of a
chunk and the number of chunks for a given object can only be achieved
by calling the encode() method on an actual buffer.

The get_chunk_count, get_data_chunk_count and get_chunk_size helpers are
added and documented.

Signed-off-by: Loic Dachary <loic@dachary.org>
erasure-code: refactor the example to use chunk size helpers

The get_chunk_size and get_chunk_count methods are implemented using the
code found in the encode() method. The encode method is modified to use
the chunk size helpers.

The unit tests are modified to use the helpers.

Signed-off-by: Loic Dachary <loic@dachary.org>
erasure-code: jerasure implementation of chunk size helpers

The encode methode uses the get_chunk_size method which is a translation
of the code it previously used for the same purpose. The chunk_count and
chunk_data_count methods return k+m and k respectively. But that will
no longer be the case after local parity is implemented.

Signed-off-by: Loic Dachary <loic@dachary.org>
erasure-code: erasure code decode interface helper

The decode_concat method is implemented, documented and tested. It is a
convenience method to concatenate chunks into a single bufferlist.

Signed-off-by: Loic Dachary <loic@dachary.org>