summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Eric Biggers <ebiggers@google.com> 2022-01-26 20:29:32 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2022-01-26 20:29:32 +0000
commite68cd4c435b73dcb6320b3de88c362724b3b34fc (patch)
treef89cc3bdf039116b43e0fb7f787d3c3e67aac3b2
parent759ccebf47a7d207b0d3b2f1faff4ec69b2f460d (diff)
parent0a3cb5df0a6912c868bf9915e27ee066149c20ce (diff)
Merge "UserDataPreparer: reboot to recovery if preparing user storage fails" am: 39d90b7a2d am: 0a3cb5df0a
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1959659 Change-Id: I0856593c8d0f39fadedcdd3565154a036f6678f6
-rw-r--r--services/core/java/com/android/server/pm/UserDataPreparer.java8
1 files changed, 8 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/UserDataPreparer.java b/services/core/java/com/android/server/pm/UserDataPreparer.java
index 045a295da965..504769064808 100644
--- a/services/core/java/com/android/server/pm/UserDataPreparer.java
+++ b/services/core/java/com/android/server/pm/UserDataPreparer.java
@@ -22,6 +22,7 @@ import android.content.Context;
import android.content.pm.UserInfo;
import android.os.Environment;
import android.os.FileUtils;
+import android.os.RecoverySystem;
import android.os.storage.StorageManager;
import android.os.storage.VolumeInfo;
import android.os.SystemProperties;
@@ -115,6 +116,13 @@ class UserDataPreparer {
// Try one last time; if we fail again we're really in trouble
prepareUserDataLI(volumeUuid, userId, userSerial,
flags | StorageManager.FLAG_STORAGE_DE, false);
+ } else {
+ try {
+ Log.e(TAG, "prepareUserData failed", e);
+ RecoverySystem.rebootPromptAndWipeUserData(mContext, "prepareUserData failed");
+ } catch (IOException e2) {
+ throw new RuntimeException("error rebooting into recovery", e2);
+ }
}
}
}