summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeff Sharkey <jsharkey@google.com> 2019-08-07 09:36:24 -0700
committer android-build-merger <android-build-merger@google.com> 2019-08-07 09:36:24 -0700
commitc80ad354b48946b8faf71c99e60de0c7f9fd28a1 (patch)
tree83b1580c9b2f12de833f5b7b0ee4e69d5c6e2711
parentb745860a3ebdcf60f7d5ea4c8ea21a3b9695b15d (diff)
parentd7f82d576689821601fec4253009c279b40bea0a (diff)
Merge "Fix StorageManagerService linkToDeath more than one time when vold/storaged died."
am: d7f82d5766 Change-Id: I2a6fc7358c3c13cd67fc642d55c9973ab24331d1
-rw-r--r--services/core/java/com/android/server/StorageManagerService.java25
1 files changed, 18 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
index deff7ef7d39a..96935851ba8a 100644
--- a/services/core/java/com/android/server/StorageManagerService.java
+++ b/services/core/java/com/android/server/StorageManagerService.java
@@ -1557,10 +1557,11 @@ class StorageManagerService extends IStorageManager.Stub
}
private void start() {
- connect();
+ connectStoraged();
+ connectVold();
}
- private void connect() {
+ private void connectStoraged() {
IBinder binder = ServiceManager.getService("storaged");
if (binder != null) {
try {
@@ -1569,7 +1570,7 @@ class StorageManagerService extends IStorageManager.Stub
public void binderDied() {
Slog.w(TAG, "storaged died; reconnecting");
mStoraged = null;
- connect();
+ connectStoraged();
}
}, 0);
} catch (RemoteException e) {
@@ -1583,7 +1584,17 @@ class StorageManagerService extends IStorageManager.Stub
Slog.w(TAG, "storaged not found; trying again");
}
- binder = ServiceManager.getService("vold");
+ if (mStoraged == null) {
+ BackgroundThread.getHandler().postDelayed(() -> {
+ connectStoraged();
+ }, DateUtils.SECOND_IN_MILLIS);
+ } else {
+ onDaemonConnected();
+ }
+ }
+
+ private void connectVold() {
+ IBinder binder = ServiceManager.getService("vold");
if (binder != null) {
try {
binder.linkToDeath(new DeathRecipient() {
@@ -1591,7 +1602,7 @@ class StorageManagerService extends IStorageManager.Stub
public void binderDied() {
Slog.w(TAG, "vold died; reconnecting");
mVold = null;
- connect();
+ connectVold();
}
}, 0);
} catch (RemoteException e) {
@@ -1611,9 +1622,9 @@ class StorageManagerService extends IStorageManager.Stub
Slog.w(TAG, "vold not found; trying again");
}
- if (mStoraged == null || mVold == null) {
+ if (mVold == null) {
BackgroundThread.getHandler().postDelayed(() -> {
- connect();
+ connectVold();
}, DateUtils.SECOND_IN_MILLIS);
} else {
onDaemonConnected();