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

Unified Diff: net/disk_cache/disk_format.h

Issue 12880: Disk cache: Add support for an extra data stream for each cache entry.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years 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 side-by-side diff with in-line comments
Download patch
Index: net/disk_cache/disk_format.h
===================================================================
--- net/disk_cache/disk_format.h (revision 6334)
+++ net/disk_cache/disk_format.h (working copy)
@@ -36,7 +36,7 @@
// entry keeps track of all the information related to the same cache entry,
// such as the key, hash value, data pointers etc. A rankings node keeps track
// of the information that is updated frequently for a given entry, such as its
-// location on the LRU list, last access time etc.
+// location on the LRU lists, last access time etc.
//
// The files that store internal information for the cache (blocks and index)
// are at least partially memory mapped. They have a location that is signaled
@@ -63,8 +63,17 @@
const int kIndexTablesize = 0x10000;
const uint32 kIndexMagic = 0xC103CAC3;
-const uint32 kCurrentVersion = 0x10003; // Version 1.3.
+const uint32 kCurrentVersion = 0x20000; // Version 2.0.
+struct LruData {
+ CacheAddr heads[5];
+ CacheAddr tails[5];
+ CacheAddr transaction; // In-flight operation target.
+ int32 operation; // Actual in-flight operation.
+ int32 operation_list; // In-flight operation list.
+ int32 pad[7];
+};
+
// Header for the master index file.
struct IndexHeader {
uint32 magic;
@@ -75,7 +84,8 @@
int32 this_id; // Id for all entries being changed (dirty flag).
CacheAddr stats; // Storage for usage data.
int32 table_len; // Actual size of the table (0 == kIndexTablesize).
- int32 pad[8];
+ int32 pad[64];
+ LruData lru; // Eviction control data.
IndexHeader() {
memset(this, 0, sizeof(*this));
magic = kIndexMagic;
@@ -99,17 +109,29 @@
uint32 hash; // Full hash of the key.
CacheAddr next; // Next entry with the same hash or bucket.
CacheAddr rankings_node; // Rankings node for this entry.
+ int32 reuse_count; // How often is this entry used.
+ int32 refetch_count; // How often is this fetched from the net.
+ int32 state; // Current state.
+ uint64 creation_time;
int32 key_len;
CacheAddr long_key; // Optional address of a long key.
- int32 data_size[2]; // We can store up to 2 data chunks for each
- CacheAddr data_addr[2]; // entry.
- char key[256 - 9 * 4]; // null terminated
+ int32 data_size[4]; // We can store up to 4 data streams for each
+ CacheAddr data_addr[4]; // entry.
+ int32 pad[6];
+ char key[256 - 24 * 4]; // null terminated
};
COMPILE_ASSERT(sizeof(EntryStore) == 256, bad_EntyStore);
const int kMaxInternalKeyLength = 4 * sizeof(EntryStore) -
offsetof(EntryStore, key) - 1;
+// Possible states for a given entry.
+enum EntryState {
+ ENTRY_NORMAL = 0,
+ ENTRY_EVICTED, // The entry was recently evicted from the cache.
+ ENTRY_DOOMED // The entry was doomed.
+};
+
#pragma pack(push, old, 4)
// Rankings information for a given entry.
struct RankingsNode {

Powered by Google App Engine
This is Rietveld 408576698