diff options
| author | 2019-08-07 10:37:51 -0700 | |
|---|---|---|
| committer | 2019-08-07 10:37:51 -0700 | |
| commit | 81fc2a94920128ab6b7f07d2aa5ea46783f1f93b (patch) | |
| tree | e13f23dc79be16910933ba5b33301e0fb3876032 | |
| parent | dfa44e1776a8485fe1c94086ee9a6d02c5186c8c (diff) | |
| parent | f286dbdebc899441c4ccae05ae3d96f907e22e71 (diff) | |
Merge "Merge "Fix StorageManagerService linkToDeath more than one time when vold/storaged died." am: d7f82d5766 am: c80ad354b4 am: a92cb75605" into qt-r1-dev-plus-aosp am: 4908c0c7c4
am: f286dbdebc
Change-Id: I009328493faae891b32baddb3147a32f319ac8bc
| -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 ddde7fef8962..4fab7c16c9ec 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(); |