From: Sage Weil Date: Thu, 2 Jun 2016 17:55:04 +0000 (-0400) Subject: os/bluestore: fix buffercache discard bug X-Git-Tag: v11.0.0~302^2~11 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5005edf80f88879de36d7f5384d103b1c68b2d82;p=ceph.git os/bluestore: fix buffercache discard bug Signed-off-by: Sage Weil --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 6149752c75b..f94821e0d90 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -455,6 +455,7 @@ void BlueStore::BufferCache::trim(uint64_t keep) { lru_list_t::iterator i = lru.end(); if (size) { + assert(i != lru.begin()); --i; } while (size > keep) { @@ -503,7 +504,7 @@ void BlueStore::BufferSpace::discard(uint64_t offset, uint64_t length) } else { _add_buffer(new Buffer(this, b->state, b->seq, end, tail)); } - cache->size -= length; + cache->size -= b->length - front; b->truncate(front); return; } else {