From: Sage Weil Date: Thu, 23 Jun 2016 21:08:32 +0000 (-0400) Subject: os/bluestore: fix buffer discard accounting for 2Q X-Git-Tag: v11.0.0~48 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cd24dc855b12ca2df2487eb4eceabbfd9685fafb;p=ceph.git os/bluestore: fix buffer discard accounting for 2Q Signed-off-by: Sage Weil --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 0131f1fc1edfb..359de96cbdc53 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -798,6 +798,7 @@ void BlueStore::BufferSpace::_clear() int BlueStore::BufferSpace::_discard(uint64_t offset, uint64_t length) { // note: we already hold cache->lock + dout(20) << __func__ << std::hex << " 0x" << offset << "~" << length << dendl; int cache_private = 0; cache->_audit("discard start"); auto i = _data_lower_bound(offset); @@ -822,13 +823,17 @@ int BlueStore::BufferSpace::_discard(uint64_t offset, uint64_t length) } else { _add_buffer(new Buffer(this, b->state, b->seq, end, tail), 0, b); } - cache->_adjust_buffer_size(b, front - (int64_t)b->length); + if (!b->is_writing()) { + cache->_adjust_buffer_size(b, front - (int64_t)b->length); + } b->truncate(front); cache->_audit("discard end 1"); break; } else { // drop tail - cache->_adjust_buffer_size(b, front - (int64_t)b->length); + if (!b->is_writing()) { + cache->_adjust_buffer_size(b, front - (int64_t)b->length); + } b->truncate(front); ++i; continue;