summaryrefslogtreecommitdiff
path: root/common/dynamic_partition_control_interface.h
diff options
context:
space:
mode:
authorYifan Hong <elsk@google.com>2020-03-11 13:20:52 -0700
committerYifan Hong <elsk@google.com>2020-03-17 15:54:19 -0700
commit3a3d0c121fd904ce8440260ee2f5d12ea09d12e2 (patch)
treed4d1079ef8bdaa8f50ec7cbdc38576c1c8e6b114 /common/dynamic_partition_control_interface.h
parentc0fa08aa7cc0cc218ae21978b801e88bf72b1626 (diff)
ResetStatus deletes snapshots for VAB.
When ResetStatus() is called, delete snapshots to free up space on VAB devices. On regular A/B, there is no need to cancel the update completely so that the update may be resumed next time. However, on VAB devices, a cancelled update should not occupy previously allocated space. Test: manually call update_engine_client --cancel when an update is in progress, then call update_engine_client --reset_status, then call snapshotctl dump to check that snapshots are deleted. Then, re-apply the update. Test: manually kill update_engine when an update is in progress, then call update_engine_client --reset_status, then call snapshotctl dump to check that snapshots are deleted. Then, re-apply the update. Test: manually apply an update until UPDATED_NEED_REBOOT, then call update_engine_client --reset_status, then call snapshotctl dump to check that snapshots are deleted. Then, re-apply the update. Test: manually apply an update until UPDATED_NEED_REBOOT, then kill update_engine, then call update_engine_client --reset_status, then call snapshotctl dump to check that snapshots are deleted. Then, re-apply the update. Bug: 147696014 Change-Id: Ic7049772091a34e0e666fd7ae361ef474d5a28aa Merged-In: Ic7049772091a34e0e666fd7ae361ef474d5a28aa
Diffstat (limited to 'common/dynamic_partition_control_interface.h')
-rw-r--r--common/dynamic_partition_control_interface.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/common/dynamic_partition_control_interface.h b/common/dynamic_partition_control_interface.h
index a878f2e9..d5db9bcd 100644
--- a/common/dynamic_partition_control_interface.h
+++ b/common/dynamic_partition_control_interface.h
@@ -98,10 +98,26 @@ class DynamicPartitionControlInterface {
// - If any error, but caller should retry after reboot, action completes with
// kError.
// - If any irrecoverable failures, action completes with kDeviceCorrupted.
+ //
+ // See ResetUpdate for differences between CleanuPreviousUpdateAction and
+ // ResetUpdate.
virtual std::unique_ptr<AbstractAction> GetCleanupPreviousUpdateAction(
BootControlInterface* boot_control,
PrefsInterface* prefs,
CleanupPreviousUpdateActionDelegateInterface* delegate) = 0;
+
+ // Called after an unwanted payload has been successfully applied and the
+ // device has not yet been rebooted.
+ //
+ // For snapshot updates (Virtual A/B), it calls
+ // DeltaPerformer::ResetUpdateProgress(false /* quick */) and
+ // frees previously allocated space; the next update will need to be
+ // started over.
+ //
+ // Note: CleanupPreviousUpdateAction does not do anything if an update is in
+ // progress, while ResetUpdate() forcefully free previously
+ // allocated space for snapshot updates.
+ virtual bool ResetUpdate(PrefsInterface* prefs) = 0;
};
} // namespace chromeos_update_engine