summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-05-16 21:11:13 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-05-16 21:11:13 +0000
commit6668fcafe221934d94c83eea534caeeddc1e8587 (patch)
tree7415e60b47392804c3385a3cdd1180a9e9fb9639
parent2ba316f58e4429033caa495cbc22a0d66dd92d15 (diff)
parent6ba336c0e280183a04ca45b217a7e89f8419d62b (diff)
downloadbase-6668fcafe221934d94c83eea534caeeddc1e8587.tar.gz
Merge "UserDataPreparer: reboot to recovery if preparing user storage fails" into snap-temp-L01900000954560285
-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);
+ }
}
}
}