AU: do not copy filesystem during full updates
The filesystem copying stage is redundant during full updates, where the
partition is being entirely overwritten regardless of its previous
content. It is also a very wasteful step, causing intensive I/O and
kernel buffer pressure, and known to (sometimes) cause jank and
otherwise have detrimental effects on our user experience.
This CL eliminates filesystem copying for full updates:
1) The decision is based on whether the Omaha response indicates that
this is a full update.
2) To be safe, we also ensure that the payload manifest does not contain
old partition hashes, which is indicative of a delta update.
Note that it is generally desirable to base the decision solely on #2
above (and ignore #1 altogether). However, this will require more
extensive re-engineering of the update flow, as filesystem copying
currently happens prior to the manifest being downloaded.
BUG=chromium:189855
TEST=Full and delta updates run correctly on x86-alex
Change-Id: Ic0dc6e32913cfb96019606624ec6b87c2e5b3ebb
Reviewed-on: https://gerrit.chromium.org/gerrit/43665
Commit-Queue: Gilad Arnold <garnold@chromium.org>
Reviewed-by: Gilad Arnold <garnold@chromium.org>
Tested-by: Gilad Arnold <garnold@chromium.org>
diff --git a/filesystem_copier_action_unittest.cc b/filesystem_copier_action_unittest.cc
index 3ffed88..0db1640 100644
--- a/filesystem_copier_action_unittest.cc
+++ b/filesystem_copier_action_unittest.cc
@@ -311,7 +311,7 @@
ObjectFeederAction<InstallPlan> feeder_action;
const char* kUrl = "http://some/url";
- InstallPlan install_plan(true, kUrl, 0, "", 0, "", "", "");
+ InstallPlan install_plan(false, true, kUrl, 0, "", 0, "", "", "");
feeder_action.set_obj(install_plan);
FilesystemCopierAction copier_action(false, false);
ObjectCollectorAction<InstallPlan> collector_action;
@@ -337,6 +337,7 @@
ObjectFeederAction<InstallPlan> feeder_action;
InstallPlan install_plan(false,
+ false,
"",
0,
"",