ceph/ceph — pull request #615 by dachary (2013-09-21 14:59:53+00:00)
Title: ErasureCode: get rid of extra copy when encoding

The encoding function is imposed extra constraints with the benefit of
getting rid of an extra copy. It will help establish a baseline for
benchmarking.

The constraints imposed ( a single bufferptr with enough unused trailing
space to accomodate for both padding and coding chunks ) are probably
inconvenient when used by the placement group and will need to be
relaxed. The alternative approach would be to code a fully generic way
of dealing with any kind of bufferlist fragmentation while minimizing
the copy operations.

At this stage it would be both overengineering and early
optimization. Overengineering because it's likely that the bufferlist
will have properties that will not require a function that can address
all possible cases ( all bufferptr have the same size, for instance
). And early optimization because the layout of the bufferlist for which
copy is to be reduced is not yet known and it is likely that a generic
optimization will not perform as well as one that is implemented later
on, when the placement group actually calls the encode function.