summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeff Sharkey <jsharkey@google.com> 2019-08-07 09:47:08 -0700
committer android-build-merger <android-build-merger@google.com> 2019-08-07 09:47:08 -0700
commita92cb75605193ed423bc5f90d37aab8b2999bed4 (patch)
tree1ade638688821369137f51ec3ad94d61fabb98c9
parent82446aa5b60e8bda0447eed7766b70d9081da2c9 (diff)
parentc80ad354b48946b8faf71c99e60de0c7f9fd28a1 (diff)
Merge "Fix StorageManagerService linkToDeath more than one time when vold/storaged died." am: d7f82d5766
am: c80ad354b4 Change-Id: I257bc1f51c8a26892b4165c9a30353a992f96a0c
-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();