diff options
| author | 2019-03-20 17:42:50 -0700 | |
|---|---|---|
| committer | 2019-03-25 21:16:01 +0000 | |
| commit | 600799b8b4a9faaa3e9ebbde7bce10c1f1167e80 (patch) | |
| tree | 9ac59b6890c15490ae55276175392d0fab411b6a | |
| parent | e3a924d23480d9a18a29ee6ffe6ae07d18909081 (diff) | |
Add Checkpoint's abortChanges
Test: Call abortChanges from the java side
Change-Id: I31690e0baa11b28fddcb5dd454a77067a60d2590
| -rw-r--r-- | core/java/android/os/storage/IStorageManager.aidl | 1 | ||||
| -rw-r--r-- | services/core/java/com/android/server/StorageManagerService.java | 13 |
2 files changed, 14 insertions, 0 deletions
diff --git a/core/java/android/os/storage/IStorageManager.aidl b/core/java/android/os/storage/IStorageManager.aidl index b5b72c7109f7..9db41116d20a 100644 --- a/core/java/android/os/storage/IStorageManager.aidl +++ b/core/java/android/os/storage/IStorageManager.aidl @@ -194,4 +194,5 @@ interface IStorageManager { boolean supportsCheckpoint() = 84; void startCheckpoint(int numTries) = 85; boolean needsCheckpoint() = 86; + void abortChanges(in String message, boolean retry) = 87; } diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index 8f21813c6b4c..ef1c8aa2c678 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -2894,6 +2894,19 @@ class StorageManagerService extends IStorageManager.Stub return mVold.needsCheckpoint(); } + /** + * Abort the current set of changes and either try again, or abort entirely + */ + @Override + public void abortChanges(String message, boolean retry) throws RemoteException { + // Only the system process is permitted to abort checkpoints + if (Binder.getCallingUid() != android.os.Process.SYSTEM_UID) { + throw new SecurityException("no permission to commit checkpoint changes"); + } + + mVold.abortChanges(message, retry); + } + @Override public String getPassword() throws RemoteException { mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER, |