From 2b0b7ae6443eeca271813415a91ab749c886fdf0 Mon Sep 17 00:00:00 2001 From: Xinze Chi Date: Mon, 24 Aug 2015 23:01:27 +0800 Subject: [PATCH] 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 --- src/common/buffer.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/common/buffer.cc b/src/common/buffer.cc index 2a91ec34bf84d..c1a39cc3e34de 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) -- 2.39.5