| 450 | } |
| 451 | |
| 452 | bool BufferPool::BufferAllocator::RemoveCleanPage( |
| 453 | const unique_lock<mutex>& client_lock, bool claim_buffer, Page* page) { |
| 454 | page->client->DCheckHoldsLock(client_lock); |
| 455 | FreeBufferArena* arena; |
| 456 | { |
| 457 | lock_guard<SpinLock> pl(page->buffer_lock); |
| 458 | // Page may be evicted - in which case it has no home core and is not in an arena. |
| 459 | if (!page->buffer.is_open()) return false; |
| 460 | arena = per_core_arenas_[page->buffer.home_core_].get(); |
| 461 | } |
| 462 | return arena->RemoveCleanPage(claim_buffer, page); |
| 463 | } |
| 464 | |
| 465 | void BufferPool::BufferAllocator::Maintenance() { |
| 466 | for (unique_ptr<FreeBufferArena>& arena : per_core_arenas_) arena->Maintenance(); |
no test coverage detected