ceph/ceph — pull request #2889 by xuechendi (2014-11-09 14:19:16+00:00)
Title: KeyValueStore: move buffers from strip_header to BufferTransaction

This patch is related to the patch https://github.com/ceph/ceph/pull/2875
This patch is another way to get rid of the 'osd crash' problem during KeyValueStore test

'strip_header' in KeyValueStore is used to cache all updated headers, 'buffers' is used to ensure all io in one transaction use buffers to access the lastest update.
Move buffers from strip_header to BufferTransaction can ensure 'buffers' being destructed after the transaction being submitted, which prevent growing 'strip_header->buffers' causing OOM problem.
Also, for all 'meta collection' will be cached in strip_header, and there lacks of lock of parallel io accessing meta collection, multi-thread accesing the 'meta collection' strip_header->buffers causes segmentation fault, when moving 'buffers' from strip_header to BufferTransaction can prevent such scenario.

Signed-off-by: Chendi.Xue