| Index: net/disk_cache/entry_impl.cc
|
| ===================================================================
|
| --- net/disk_cache/entry_impl.cc (revision 19175)
|
| +++ net/disk_cache/entry_impl.cc (working copy)
|
| @@ -81,7 +81,7 @@
|
| entry_.LazyInit(backend->File(address), address);
|
| doomed_ = false;
|
| backend_ = backend;
|
| - for (int i = 0; i < NUM_STREAMS; i++) {
|
| + for (int i = 0; i < kNumStreams; i++) {
|
| unreported_size_[i] = 0;
|
| }
|
| }
|
| @@ -100,7 +100,7 @@
|
| DeleteEntryData(true);
|
| } else {
|
| bool ret = true;
|
| - for (int index = 0; index < NUM_STREAMS; index++) {
|
| + for (int index = 0; index < kNumStreams; index++) {
|
| if (user_buffers_[index].get()) {
|
| if (!(ret = Flush(index, entry_.Data()->data_size[index], false)))
|
| LOG(ERROR) << "Failed to save user data";
|
| @@ -148,7 +148,7 @@
|
| if (entry->Data()->key_len > kMaxInternalKeyLength) {
|
| Addr address(entry->Data()->long_key);
|
| DCHECK(address.is_initialized());
|
| - COMPILE_ASSERT(NUM_STREAMS == kKeyFileIndex, invalid_key_index);
|
| + COMPILE_ASSERT(kNumStreams == kKeyFileIndex, invalid_key_index);
|
| File* file = const_cast<EntryImpl*>(this)->GetBackingFile(address,
|
| kKeyFileIndex);
|
|
|
| @@ -177,7 +177,7 @@
|
| }
|
|
|
| int32 EntryImpl::GetDataSize(int index) const {
|
| - if (index < 0 || index >= NUM_STREAMS)
|
| + if (index < 0 || index >= kNumStreams)
|
| return 0;
|
|
|
| CacheEntryBlock* entry = const_cast<CacheEntryBlock*>(&entry_);
|
| @@ -187,7 +187,7 @@
|
| int EntryImpl::ReadData(int index, int offset, net::IOBuffer* buf, int buf_len,
|
| net::CompletionCallback* completion_callback) {
|
| DCHECK(node_.Data()->dirty);
|
| - if (index < 0 || index >= NUM_STREAMS)
|
| + if (index < 0 || index >= kNumStreams)
|
| return net::ERR_INVALID_ARGUMENT;
|
|
|
| int entry_size = entry_.Data()->data_size[index];
|
| @@ -198,9 +198,6 @@
|
| return net::ERR_INVALID_ARGUMENT;
|
|
|
| Time start = Time::Now();
|
| - static Histogram stats("DiskCache.ReadTime", TimeDelta::FromMilliseconds(1),
|
| - TimeDelta::FromSeconds(10), 50);
|
| - stats.SetFlags(kUmaTargetedHistogramFlag);
|
|
|
| if (offset + buf_len > entry_size)
|
| buf_len = entry_size - offset;
|
| @@ -213,8 +210,7 @@
|
| // Complete the operation locally.
|
| DCHECK(kMaxBlockSize >= offset + buf_len);
|
| memcpy(buf->data() , user_buffers_[index].get() + offset, buf_len);
|
| - if (backend_->cache_type() == net::DISK_CACHE)
|
| - stats.AddTime(Time::Now() - start);
|
| + ReportIOTime(kRead, start);
|
| return buf_len;
|
| }
|
|
|
| @@ -246,8 +242,7 @@
|
| if (io_callback && completed)
|
| io_callback->Discard();
|
|
|
| - if (backend_->cache_type() == net::DISK_CACHE)
|
| - stats.AddTime(Time::Now() - start);
|
| + ReportIOTime(kRead, start);
|
| return (completed || !completion_callback) ? buf_len : net::ERR_IO_PENDING;
|
| }
|
|
|
| @@ -255,7 +250,7 @@
|
| net::CompletionCallback* completion_callback,
|
| bool truncate) {
|
| DCHECK(node_.Data()->dirty);
|
| - if (index < 0 || index >= NUM_STREAMS)
|
| + if (index < 0 || index >= kNumStreams)
|
| return net::ERR_INVALID_ARGUMENT;
|
|
|
| if (offset < 0 || buf_len < 0)
|
| @@ -274,9 +269,6 @@
|
| }
|
|
|
| Time start = Time::Now();
|
| - static Histogram stats("DiskCache.WriteTime", TimeDelta::FromMilliseconds(1),
|
| - TimeDelta::FromSeconds(10), 50);
|
| - stats.SetFlags(kUmaTargetedHistogramFlag);
|
|
|
| // Read the size at this point (it may change inside prepare).
|
| int entry_size = entry_.Data()->data_size[index];
|
| @@ -314,8 +306,7 @@
|
|
|
| DCHECK(kMaxBlockSize >= offset + buf_len);
|
| memcpy(user_buffers_[index].get() + offset, buf->data(), buf_len);
|
| - if (backend_->cache_type() == net::DISK_CACHE)
|
| - stats.AddTime(Time::Now() - start);
|
| + ReportIOTime(kWrite, start);
|
| return buf_len;
|
| }
|
|
|
| @@ -351,8 +342,7 @@
|
| if (io_callback && completed)
|
| io_callback->Discard();
|
|
|
| - if (backend_->cache_type() == net::DISK_CACHE)
|
| - stats.AddTime(Time::Now() - start);
|
| + ReportIOTime(kWrite, start);
|
| return (completed || !completion_callback) ? buf_len : net::ERR_IO_PENDING;
|
| }
|
|
|
| @@ -363,8 +353,11 @@
|
| if (net::OK != result)
|
| return result;
|
|
|
| - return sparse_->StartIO(SparseControl::kReadOperation, offset, buf, buf_len,
|
| - completion_callback);
|
| + Time start = Time::Now();
|
| + result = sparse_->StartIO(SparseControl::kReadOperation, offset, buf, buf_len,
|
| + completion_callback);
|
| + ReportIOTime(kSparseRead, start);
|
| + return result;
|
| }
|
|
|
| int EntryImpl::WriteSparseData(int64 offset, net::IOBuffer* buf, int buf_len,
|
| @@ -374,8 +367,11 @@
|
| if (net::OK != result)
|
| return result;
|
|
|
| - return sparse_->StartIO(SparseControl::kWriteOperation, offset, buf, buf_len,
|
| - completion_callback);
|
| + Time start = Time::Now();
|
| + result = sparse_->StartIO(SparseControl::kWriteOperation, offset, buf,
|
| + buf_len, completion_callback);
|
| + ReportIOTime(kSparseWrite, start);
|
| + return result;
|
| }
|
|
|
| int EntryImpl::GetAvailableRange(int64 offset, int len, int64* start) {
|
| @@ -461,7 +457,7 @@
|
| CACHE_UMA(COUNTS, "DeleteHeader", 0, GetDataSize(0));
|
| if (GetDataSize(1))
|
| CACHE_UMA(COUNTS, "DeleteData", 0, GetDataSize(1));
|
| - for (int index = 0; index < NUM_STREAMS; index++) {
|
| + for (int index = 0; index < kNumStreams; index++) {
|
| Addr address(entry_.Data()->data_addr[index]);
|
| if (address.is_initialized()) {
|
| DeleteData(address, index);
|
| @@ -585,7 +581,7 @@
|
| }
|
|
|
| bool EntryImpl::CreateDataBlock(int index, int size) {
|
| - DCHECK(index >= 0 && index < NUM_STREAMS);
|
| + DCHECK(index >= 0 && index < kNumStreams);
|
|
|
| Addr address(entry_.Data()->data_addr[index]);
|
| if (!CreateBlock(size, &address))
|
| @@ -845,6 +841,26 @@
|
| return result;
|
| }
|
|
|
| +void EntryImpl::ReportIOTime(Operation op, const base::Time& start) {
|
| + int group = backend_->GetSizeGroup();
|
| + switch (op) {
|
| + case kRead:
|
| + CACHE_UMA(AGE_MS, "ReadTime", group, start);
|
| + break;
|
| + case kWrite:
|
| + CACHE_UMA(AGE_MS, "WriteTime", group, start);
|
| + break;
|
| + case kSparseRead:
|
| + CACHE_UMA(AGE_MS, "SparseReadTime", 0, start);
|
| + break;
|
| + case kSparseWrite:
|
| + CACHE_UMA(AGE_MS, "SparseWriteTime", 0, start);
|
| + break;
|
| + default:
|
| + NOTREACHED();
|
| + }
|
| +}
|
| +
|
| void EntryImpl::Log(const char* msg) {
|
| void* pointer = NULL;
|
| int dirty = 0;
|
|
|