Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(495)

Side by Side Diff: net/disk_cache/eviction.cc

Issue 2944002: Revert 51858 - Disk cache: Switch the disk cache to use the cache_thread. ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/disk_cache/entry_unittest.cc ('k') | net/disk_cache/file_posix.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // The eviction policy is a very simple pure LRU, so the elements at the end of 5 // The eviction policy is a very simple pure LRU, so the elements at the end of
6 // the list are evicted until kCleanUpMargin free space is available. There is 6 // the list are evicted until kCleanUpMargin free space is available. There is
7 // only one list in use (Rankings::NO_USE), and elements are sent to the front 7 // only one list in use (Rankings::NO_USE), and elements are sent to the front
8 // of the list whenever they are accessed. 8 // of the list whenever they are accessed.
9 9
10 // The new (in-development) eviction policy ads re-use as a factor to evict 10 // The new (in-development) eviction policy ads re-use as a factor to evict
11 // an entry. The story so far: 11 // an entry. The story so far:
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 217
218 bool Eviction::EvictEntry(CacheRankingsBlock* node, bool empty) { 218 bool Eviction::EvictEntry(CacheRankingsBlock* node, bool empty) {
219 EntryImpl* entry = backend_->GetEnumeratedEntry(node, true); 219 EntryImpl* entry = backend_->GetEnumeratedEntry(node, true);
220 if (!entry) { 220 if (!entry) {
221 Trace("NewEntry failed on Trim 0x%x", node->address().value()); 221 Trace("NewEntry failed on Trim 0x%x", node->address().value());
222 return false; 222 return false;
223 } 223 }
224 224
225 ReportTrimTimes(entry); 225 ReportTrimTimes(entry);
226 if (empty || !new_eviction_) { 226 if (empty || !new_eviction_) {
227 entry->DoomImpl(); 227 entry->Doom();
228 } else { 228 } else {
229 entry->DeleteEntryData(false); 229 entry->DeleteEntryData(false);
230 EntryStore* info = entry->entry()->Data(); 230 EntryStore* info = entry->entry()->Data();
231 DCHECK(ENTRY_NORMAL == info->state); 231 DCHECK(ENTRY_NORMAL == info->state);
232 232
233 rankings_->Remove(entry->rankings(), GetListForEntryV2(entry)); 233 rankings_->Remove(entry->rankings(), GetListForEntryV2(entry));
234 info->state = ENTRY_EVICTED; 234 info->state = ENTRY_EVICTED;
235 entry->entry()->Store(); 235 entry->entry()->Store();
236 rankings_->Insert(entry->rankings(), true, Rankings::DELETED); 236 rankings_->Insert(entry->rankings(), true, Rankings::DELETED);
237 backend_->OnEvent(Stats::TRIM_ENTRY); 237 backend_->OnEvent(Stats::TRIM_ENTRY);
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 } 446 }
447 447
448 // TODO(rvargas): figure out how to deal with corruption at this point (dirty 448 // TODO(rvargas): figure out how to deal with corruption at this point (dirty
449 // entries that live in this list). 449 // entries that live in this list).
450 if (node->Data()->dirty) { 450 if (node->Data()->dirty) {
451 // We ignore the failure; we're removing the entry anyway. 451 // We ignore the failure; we're removing the entry anyway.
452 entry->Update(); 452 entry->Update();
453 } 453 }
454 bool doomed = (entry->entry()->Data()->state == ENTRY_DOOMED); 454 bool doomed = (entry->entry()->Data()->state == ENTRY_DOOMED);
455 entry->entry()->Data()->state = ENTRY_DOOMED; 455 entry->entry()->Data()->state = ENTRY_DOOMED;
456 entry->DoomImpl(); 456 entry->Doom();
457 entry->Release(); 457 entry->Release();
458 return !doomed; 458 return !doomed;
459 } 459 }
460 460
461 bool Eviction::NodeIsOldEnough(CacheRankingsBlock* node, int list) { 461 bool Eviction::NodeIsOldEnough(CacheRankingsBlock* node, int list) {
462 if (!node) 462 if (!node)
463 return false; 463 return false;
464 464
465 // If possible, we want to keep entries on each list at least kTargetTime 465 // If possible, we want to keep entries on each list at least kTargetTime
466 // hours. Each successive list on the enumeration has 2x the target time of 466 // hours. Each successive list on the enumeration has 2x the target time of
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 Time::FromInternalValue(last2.get()->Data()->last_used)); 502 Time::FromInternalValue(last2.get()->Data()->last_used));
503 if (last3.get()) 503 if (last3.get())
504 CACHE_UMA(AGE, "HighUseAge", 0, 504 CACHE_UMA(AGE, "HighUseAge", 0,
505 Time::FromInternalValue(last3.get()->Data()->last_used)); 505 Time::FromInternalValue(last3.get()->Data()->last_used));
506 if (last4.get()) 506 if (last4.get())
507 CACHE_UMA(AGE, "DeletedAge", 0, 507 CACHE_UMA(AGE, "DeletedAge", 0,
508 Time::FromInternalValue(last4.get()->Data()->last_used)); 508 Time::FromInternalValue(last4.get()->Data()->last_used));
509 } 509 }
510 510
511 } // namespace disk_cache 511 } // namespace disk_cache
OLDNEW
« no previous file with comments | « net/disk_cache/entry_unittest.cc ('k') | net/disk_cache/file_posix.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698