diff options
| author | 2019-08-07 09:36:24 -0700 | |
|---|---|---|
| committer | 2019-08-07 09:36:24 -0700 | |
| commit | c80ad354b48946b8faf71c99e60de0c7f9fd28a1 (patch) | |
| tree | 83b1580c9b2f12de833f5b7b0ee4e69d5c6e2711 | |
| parent | b745860a3ebdcf60f7d5ea4c8ea21a3b9695b15d (diff) | |
| parent | d7f82d576689821601fec4253009c279b40bea0a (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.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(); |