diff options
| author | 2019-08-07 09:47:08 -0700 | |
|---|---|---|
| committer | 2019-08-07 09:47:08 -0700 | |
| commit | a92cb75605193ed423bc5f90d37aab8b2999bed4 (patch) | |
| tree | 1ade638688821369137f51ec3ad94d61fabb98c9 | |
| parent | 82446aa5b60e8bda0447eed7766b70d9081da2c9 (diff) | |
| parent | c80ad354b48946b8faf71c99e60de0c7f9fd28a1 (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.java | 25 |
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(); |