]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/common/buffer.cc
update sources to v12.2.3
[ceph.git] / ceph / src / common / buffer.cc
index 18ae276cc6faccaf06cf8c6128b4358bb46a5a4d..5ad822f125ed14398f08c54d1284c33e501091f0 100644 (file)
@@ -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<ptr>::iterator p = _buffers.begin();
     while (p != _buffers.end()) {
       // keep anything that's already align and sized aligned