Add StorageManager checkpoint APIs.
To allow the framework to check for filesystem checkpointing support,
and to allow it to request a checkpoint for the next boot.
Bug: 126740531
Test: builds
Change-Id: I640d319397d850cb2dc64deca80bdb70838cc9e8
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
index e28d484..f416110 100644
--- a/services/core/java/com/android/server/StorageManagerService.java
+++ b/services/core/java/com/android/server/StorageManagerService.java
@@ -2717,6 +2717,38 @@
}
/**
+ * Check whether the device supports filesystem checkpointing.
+ *
+ * @return true if the device supports filesystem checkpointing, false otherwise.
+ */
+ @Override
+ public boolean supportsCheckpoint() throws RemoteException {
+ // Only the system process is permitted to start checkpoints
+ if (Binder.getCallingUid() != android.os.Process.SYSTEM_UID) {
+ throw new SecurityException("no permission to check filesystem checkpoint support");
+ }
+
+ return mVold.supportsCheckpoint();
+ }
+
+ /**
+ * Signal that checkpointing partitions should start a checkpoint on the next boot.
+ *
+ * @param numTries Number of times to try booting in checkpoint mode, before we will boot
+ * non-checkpoint mode and commit all changes immediately. Callers are
+ * responsible for ensuring that boot is safe (eg, by rolling back updates).
+ */
+ @Override
+ public void startCheckpoint(int numTries) throws RemoteException {
+ // Only the system process is permitted to start checkpoints
+ if (Binder.getCallingUid() != android.os.Process.SYSTEM_UID) {
+ throw new SecurityException("no permission to start filesystem checkpoint");
+ }
+
+ mVold.startCheckpoint(numTries);
+ }
+
+ /**
* Signal that checkpointing partitions should commit changes
*/
@Override