]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: fix buffercache discard bug
authorSage Weil <sage@redhat.com>
Thu, 2 Jun 2016 17:55:04 +0000 (13:55 -0400)
committerSage Weil <sage@redhat.com>
Fri, 3 Jun 2016 15:00:30 +0000 (11:00 -0400)
Signed-off-by: Sage Weil <sage@redhat.com>
src/os/bluestore/BlueStore.cc

index 6149752c75bb9d547644cc097b60090532c0f8cb..f94821e0d90bd902d8df878fb3769c41467c07a5 100644 (file)
@@ -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 {