aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Mayer <fmayer@google.com>2018-04-10 13:17:00 -0700
committerandroid-build-merger <android-build-merger@google.com>2018-04-10 13:17:00 -0700
commit8074073c818f0a4389a60081da7739e4cb909a4b (patch)
treeb9993f39575ed649cf60963ac425d9e617cf4fda
parentd13666e760913c9071d5dc19aa2e5d4f22ce9529 (diff)
parenta75d8e2ca825776939b23a475e3b64e9279d99e0 (diff)
downloadperfetto-8074073c818f0a4389a60081da7739e4cb909a4b.tar.gz
Remove inodes we find from scheduled scan as well. am: 5e38ea28bc am: 00f311f168
am: a75d8e2ca8 Change-Id: I705dcd98862aaf55fc1a344880a68439de5136d7
-rw-r--r--src/traced/probes/filesystem/inode_file_data_source.cc11
-rw-r--r--src/traced/probes/filesystem/inode_file_data_source.h2
2 files changed, 13 insertions, 0 deletions
diff --git a/src/traced/probes/filesystem/inode_file_data_source.cc b/src/traced/probes/filesystem/inode_file_data_source.cc
index 4bcc0b8db..a66c2a9c9 100644
--- a/src/traced/probes/filesystem/inode_file_data_source.cc
+++ b/src/traced/probes/filesystem/inode_file_data_source.cc
@@ -270,6 +270,15 @@ InodeFileMap* InodeFileDataSource::AddToCurrentTracePacket(
return current_file_map_;
}
+void InodeFileDataSource::RemoveFromNextMissingInodes(
+ BlockDeviceID block_device_id,
+ Inode inode_number) {
+ auto it = next_missing_inodes_.find(block_device_id);
+ if (it == next_missing_inodes_.end())
+ return;
+ it->second.erase(inode_number);
+}
+
bool InodeFileDataSource::OnInodeFound(
BlockDeviceID block_device_id,
Inode inode_number,
@@ -286,6 +295,8 @@ bool InodeFileDataSource::OnInodeFound(
if (it->second.empty())
missing_inodes_.erase(it);
+ RemoveFromNextMissingInodes(block_device_id, inode_number);
+
std::pair<BlockDeviceID, Inode> key{block_device_id, inode_number};
auto cur_val = cache_->Get(key);
if (cur_val) {
diff --git a/src/traced/probes/filesystem/inode_file_data_source.h b/src/traced/probes/filesystem/inode_file_data_source.h
index a912d0623..bede1240d 100644
--- a/src/traced/probes/filesystem/inode_file_data_source.h
+++ b/src/traced/probes/filesystem/inode_file_data_source.h
@@ -99,6 +99,8 @@ class InodeFileDataSource : public FileScanner::Delegate {
void AddRootsForBlockDevice(BlockDeviceID block_device_id,
std::vector<std::string>* roots);
+ void RemoveFromNextMissingInodes(BlockDeviceID block_device_id,
+ Inode inode_number);
uint32_t GetScanIntervalMs() const;
uint32_t GetScanDelayMs() const;