summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Magic <kmagic@google.com>2018-07-11 13:18:03 -0700
committerTri Vo <trong@google.com>2018-08-28 10:39:42 -0700
commit93ca85a1724806c30b0fbc04837a7e869ba1c165 (patch)
treec18609343d5667f482843e4035878d753d9e7102
parent8fd48568d50245c404015266bdb0a0592bf06f50 (diff)
Update PageTypeInfoParser to be less restrictive.
The page block order is an independent variable from the free page order table in the kernel, so the parser should not error out if they do not match. Bug: 110559361 Test: incident_helper_test Change-Id: I08ad9c8f9b29cc15b80a89929f3a1fb6886852e6 Merged-In: I08ad9c8f9b29cc15b80a89929f3a1fb6886852e6 (cherry picked from commit 3abb43991685d0ba40e70dd5f81abe044f65b891)
-rw-r--r--cmds/incident_helper/src/parsers/PageTypeInfoParser.cpp9
-rw-r--r--cmds/incident_helper/testdata/pagetypeinfo.txt4
-rw-r--r--cmds/incident_helper/tests/PageTypeInfoParser_test.cpp4
3 files changed, 6 insertions, 11 deletions
diff --git a/cmds/incident_helper/src/parsers/PageTypeInfoParser.cpp b/cmds/incident_helper/src/parsers/PageTypeInfoParser.cpp
index 0615c74b8d64..2a89c920c119 100644
--- a/cmds/incident_helper/src/parsers/PageTypeInfoParser.cpp
+++ b/cmds/incident_helper/src/parsers/PageTypeInfoParser.cpp
@@ -75,18 +75,13 @@ PageTypeInfoParser::Parse(const int in, const int out) const
} else return BAD_VALUE;
// expect part 2 starts with "type"
if (stripPrefix(&record[2], "type")) {
- // expect the rest of part 2 has number of (pageBlockOrder + 2) parts
// An example looks like:
// header line: type 0 1 2 3 4 5 6 7 8 9 10
// record line: Unmovable 426 279 226 1 1 1 0 0 2 2 0
- // The pageBlockOrder = 10 and it's zero-indexed. so total parts
- // are 10 + 1(zero-indexed) + 1(the type part) = 12.
record_t pageCounts = parseRecord(record[2]);
- int pageCountsSize = pageBlockOrder + 2;
- if ((int)pageCounts.size() != pageCountsSize) return BAD_VALUE;
proto.write(PageTypeInfoProto::MigrateType::TYPE, pageCounts[0]);
- for (auto i=1; i<pageCountsSize; i++) {
+ for (size_t i=1; i<pageCounts.size(); i++) {
proto.write(PageTypeInfoProto::MigrateType::FREE_PAGES_COUNT, toInt(pageCounts[i]));
}
} else return BAD_VALUE;
@@ -125,4 +120,4 @@ PageTypeInfoParser::Parse(const int in, const int out) const
fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.string(), proto.size());
return NO_ERROR;
-} \ No newline at end of file
+}
diff --git a/cmds/incident_helper/testdata/pagetypeinfo.txt b/cmds/incident_helper/testdata/pagetypeinfo.txt
index d45ddc408c0f..c65b5a1fa1e1 100644
--- a/cmds/incident_helper/testdata/pagetypeinfo.txt
+++ b/cmds/incident_helper/testdata/pagetypeinfo.txt
@@ -1,5 +1,5 @@
-Page block order: 10
-Pages per block: 1024
+Page block order: 9
+Pages per block: 512
Free pages count per migrate type at order 0 1 2 3 4 5 6 7 8 9 10
Node 0, zone DMA, type Unmovable 426 279 226 1 1 1 0 0 2 2 0
diff --git a/cmds/incident_helper/tests/PageTypeInfoParser_test.cpp b/cmds/incident_helper/tests/PageTypeInfoParser_test.cpp
index 9bad7be4a07e..5688681e45fd 100644
--- a/cmds/incident_helper/tests/PageTypeInfoParser_test.cpp
+++ b/cmds/incident_helper/tests/PageTypeInfoParser_test.cpp
@@ -54,8 +54,8 @@ TEST_F(PageTypeInfoParserTest, Success) {
PageTypeInfoParser parser;
PageTypeInfoProto expected;
- expected.set_page_block_order(10);
- expected.set_pages_per_block(1024);
+ expected.set_page_block_order(9);
+ expected.set_pages_per_block(512);
PageTypeInfoProto::MigrateType* mt1 = expected.add_migrate_types();
mt1->set_node(0);