X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Fcommon%2Fbuffer.cc;h=5ad822f125ed14398f08c54d1284c33e501091f0;hb=b32b81446b3b05102be0267e79203f59329c1d97;hp=18ae276cc6faccaf06cf8c6128b4358bb46a5a4d;hpb=215dd7151453fae88e6f968c975b6ce309d42dcf;p=ceph.git diff --git a/ceph/src/common/buffer.cc b/ceph/src/common/buffer.cc index 18ae276cc..5ad822f12 100644 --- a/ceph/src/common/buffer.cc +++ b/ceph/src/common/buffer.cc @@ -1760,9 +1760,15 @@ static std::atomic_flag buffer_debug_lock = ATOMIC_FLAG_INIT; } bool buffer::list::rebuild_aligned_size_and_memory(unsigned align_size, - unsigned align_memory) + unsigned align_memory, + unsigned max_buffers) { unsigned old_memcopy_count = _memcopy_count; + + if (max_buffers && _buffers.size() > max_buffers + && _len > (max_buffers * align_size)) { + align_size = ROUND_UP_TO(ROUND_UP_TO(_len, max_buffers) / max_buffers, align_size); + } std::list::iterator p = _buffers.begin(); while (p != _buffers.end()) { // keep anything that's already align and sized aligned