From: Ma Jianpeng Date: Fri, 12 Sep 2014 03:21:58 +0000 (+0800) Subject: buffer: In rebuild_page_aligned for the last ptr is page aligned, no need call rebuild(). X-Git-Tag: v0.86~80^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c268400bcbf34d86c05e135b23b6f026cfa92bbc;p=ceph.git 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 --- 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()); } }