From: Sage Weil Date: Thu, 2 Jun 2016 20:44:03 +0000 (-0400) Subject: os/bluestore: better audit_lru debugging X-Git-Tag: v11.0.0~302^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2ea7750f59850a86aacf1e15060a211a460f085c;p=ceph.git os/bluestore: better audit_lru debugging Signed-off-by: Sage Weil --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 81ce6da64e6..54f63c24970 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -469,7 +469,7 @@ void BlueStore::Cache::trim(uint64_t onode_max, uint64_t buffer_max) << " buffers " << buffer_size << " / " << buffer_max << dendl; - _audit_lru(); + _audit_lru("trim start"); // buffers auto i = buffer_lru.end(); @@ -528,9 +528,10 @@ void BlueStore::Cache::trim(uint64_t onode_max, uint64_t buffer_max) } #ifdef DEBUG_CACHE -void BlueStore::Cache::_audit_lru() +void BlueStore::Cache::_audit_lru(const char *when) { if (true) { + dout(10) << __func__ << " " << when << " start" << dendl; uint64_t s = 0; for (auto i = buffer_lru.begin(); i != buffer_lru.end(); ++i) { s += i->length; @@ -543,7 +544,8 @@ void BlueStore::Cache::_audit_lru() } assert(s == buffer_size); } - dout(20) << __func__ << " buffer_size " << buffer_size << " ok" << dendl; + dout(20) << __func__ << " " << when << " buffer_size " << buffer_size + << " ok" << dendl; } } #endif @@ -564,8 +566,7 @@ void BlueStore::BufferSpace::_clear() void BlueStore::BufferSpace::_discard(uint64_t offset, uint64_t length) { - std::lock_guard l(cache->lock); - cache->_audit_lru(); + cache->_audit_lru("discard start"); auto i = _data_lower_bound(offset); uint64_t end = offset + length; while (i != buffer_map.end()) { @@ -587,7 +588,7 @@ void BlueStore::BufferSpace::_discard(uint64_t offset, uint64_t length) } cache->buffer_size -= b->length - front; b->truncate(front); - cache->_audit_lru(); + cache->_audit_lru("discard end 1"); return; } else { // drop tail @@ -613,7 +614,7 @@ void BlueStore::BufferSpace::_discard(uint64_t offset, uint64_t length) _add_buffer(new Buffer(this, b->state, b->seq, end, keep)); _rm_buffer(i); } - cache->_audit_lru(); + cache->_audit_lru("discard end 2"); return; } } @@ -687,7 +688,7 @@ void BlueStore::BufferSpace::finish_write(uint64_t seq) ++i; } } - cache->_audit_lru(); + cache->_audit_lru("finish_write end"); } // OnodeSpace diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index 98da0d83653..52626d52671 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -200,27 +200,27 @@ public: BufferSpace(Cache *c) : cache(c) {} void _add_buffer(Buffer *b) { - cache->_audit_lru(); + cache->_audit_lru("_add_buffer start"); buffer_map[b->offset].reset(b); cache->buffer_lru.push_front(*b); cache->buffer_size += b->length; if (b->is_writing()) { writing.push_back(*b); } - cache->_audit_lru(); + cache->_audit_lru("_add_buffer end"); } void _rm_buffer(Buffer *b) { _rm_buffer(buffer_map.find(b->offset)); } void _rm_buffer(map>::iterator p) { - cache->_audit_lru(); + cache->_audit_lru("_rm_buffer start"); cache->buffer_size -= p->second->length; cache->buffer_lru.erase(cache->buffer_lru.iterator_to(*p->second)); if (p->second->is_writing()) { writing.erase(writing.iterator_to(*p->second)); } buffer_map.erase(p); - cache->_audit_lru(); + cache->_audit_lru("_rm_buffer end"); } map>::iterator _data_lower_bound( @@ -424,15 +424,15 @@ public: auto p = buffer_lru.iterator_to(*b); buffer_lru.erase(p); buffer_lru.push_front(*b); - _audit_lru(); + _audit_lru("_touch_buffer end"); } void trim(uint64_t onode_max, uint64_t buffer_max); #ifdef DEBUG_CACHE - void _audit_lru(); + void _audit_lru(const char *s); #else - void _audit_lru() { /* no-op */ } + void _audit_lru(const char *s) { /* no-op */ } #endif };