From c268400bcbf34d86c05e135b23b6f026cfa92bbc Mon Sep 17 00:00:00 2001 From: Ma Jianpeng Date: Fri, 12 Sep 2014 11:21:58 +0800 Subject: [PATCH] buffer: In rebuild_page_aligned for the last ptr is page aligned, no need call rebuild(). This only happen for the last ptr. Because rebuild() don't change the len of ptr, so if last ptr isn't page-size aligned but is page aligned, the rebuild() don't change anything. Signed-off-by: Ma Jianpeng --- src/common/buffer.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/common/buffer.cc b/src/common/buffer.cc index 7617c2f530b8..b1417591bff5 100644 --- a/src/common/buffer.cc +++ b/src/common/buffer.cc @@ -1133,8 +1133,10 @@ void buffer::list::rebuild_page_aligned() (!p->is_page_aligned() || !p->is_n_page_sized() || (offset & ~CEPH_PAGE_MASK))); - ptr nb(buffer::create_page_aligned(unaligned._len)); - unaligned.rebuild(nb); + if (!(unaligned.is_contiguous() && unaligned._buffers.front().is_page_aligned())) { + ptr nb(buffer::create_page_aligned(unaligned._len)); + unaligned.rebuild(nb); + } _buffers.insert(p, unaligned._buffers.front()); } } -- 2.47.3