PowerManagerService: Switch to using MountService shutdown for media
Signed-off-by: San Mehat <san@google.com>
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index 5a14ba1..89261a8 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -2126,60 +2126,6 @@
}
}
- private void unmountExternalStorage() {
- String state = Environment.getExternalStorageState();
-
- IMountService mSvc;
-
- mSvc = IMountService.Stub.asInterface(
- ServiceManager.getService("mount"));
- if (mSvc == null) {
- Log.e(TAG, "MountService unavailable");
- return;
- }
-
- if (state.equals(Environment.MEDIA_SHARED)) {
- /*
- * If the media is currently shared, unshare it.
- * XXX: This is still dangerous!. We should not
- * be rebooting at *all* if UMS is enabled, since
- * the UMS host could have dirty FAT cache entries
- * yet to flush.
- */
- try {
- mSvc.setMassStorageEnabled(false);
- } catch (Exception e) {
- Log.e(TAG, "ums disable failed", e);
- }
- } else if (state.equals(Environment.MEDIA_CHECKING)) {
- /*
- * If the media is being checked, then we need to wait for
- * it to complete before being able to proceed.
- */
- while (state.equals(Environment.MEDIA_CHECKING)) {
- state = Environment.getExternalStorageState();
- try {
- Thread.sleep(1000);
- } catch (InterruptedException iex) {
- Log.e(TAG, "Interrupted while waiting for media", iex);
- break;
- }
- }
- }
-
- if (state.equals(Environment.MEDIA_MOUNTED)) {
- /*
- * If the media is mounted, then gracefully unmount it.
- */
- try {
- String m = Environment.getExternalStorageDirectory().toString();
- mSvc.unmountMedia(m);
- } catch (Exception e) {
- Log.e(TAG, "external storage unmount failed", e);
- }
- }
- }
-
/**
* Reboot the device immediately, passing 'reason' (may be null)
* to the underlying __reboot system call. Should not return.
@@ -2188,7 +2134,22 @@
{
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.REBOOT, null);
- unmountExternalStorage();
+ /*
+ * Manually shutdown the MountService to ensure media is
+ * put into a safe state.
+ */
+ IMountService mSvc = IMountService.Stub.asInterface(
+ ServiceManager.getService("mount"));
+
+ if (mSvc != null) {
+ try {
+ mSvc.shutdown();
+ } catch (Exception e) {
+ Log.e(TAG, "MountService shutdown failed", e);
+ }
+ } else {
+ Log.w(TAG, "MountService unavailable for shutdown");
+ }
try {
Power.reboot(reason);