From: Xinze Chi Date: Mon, 24 Aug 2015 15:01:27 +0000 (+0800) Subject: common: fix insert empty ptr when bufferlist rebuild X-Git-Tag: v0.94.4~37^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2b0b7ae6443eeca271813415a91ab749c886fdf0;p=ceph.git common: fix insert empty ptr when bufferlist rebuild Fixes: #12775 Signed-off-by: Xinze Chi (cherry picked from commit fb1b6ddd7bfe40d4a38d5ec59b1c3f59f2a83f23) Conflicts: src/common/buffer.cc : because invalidate_crc did not exist in hammer --- diff --git a/src/common/buffer.cc b/src/common/buffer.cc index 2a91ec34bf8..c1a39cc3e34 100644 --- a/src/common/buffer.cc +++ b/src/common/buffer.cc @@ -1206,6 +1206,10 @@ static simple_spinlock_t buffer_debug_lock = SIMPLE_SPINLOCK_INITIALIZER; void buffer::list::rebuild() { + if (_len == 0) { + _buffers.clear(); + return; + } ptr nb; if ((_len & ~CEPH_PAGE_MASK) == 0) nb = buffer::create_page_aligned(_len); @@ -1225,7 +1229,8 @@ static simple_spinlock_t buffer_debug_lock = SIMPLE_SPINLOCK_INITIALIZER; } _memcopy_count += pos; _buffers.clear(); - _buffers.push_back(nb); + if (nb.length()) + _buffers.push_back(nb); } void buffer::list::rebuild_aligned(unsigned align)